额外补充内容:
2016.11.26
Scanner类介绍
1.扫描控制台输入Scanner s = new Scanner(System.in); 2.可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,就可以逐段(根据正则分隔式)来扫描整个文本(scanner(file);scanner(string))
Scanner sc=new Scanner(new File("D:\demo\1.txt"));
String str=sc.nextLine();System.out.println(str);
或者Scanner sc=new Scanner(Paths.get("D:\demo\1.txt"));
3.其有的方法nextInt() 读取下一行内容;next() 读取下一个单词hasNext() 检测是否含有下一个单词;
2016.11.27
构造器与方法的区别
(构造器是一种特殊的方法;用来构造并初始化对象及实例)
构造器的作用初始化:
(当创建一个或多个显式的构造器时,默认的构造器就不在了)
2016.11.27
四大访问修饰符
java的四个关键字:public、protected、default、private(他们决定了紧跟其后被定义的东西可以被谁使用) 适用范围<访问权限范围越小,安全性越高>
访问权限 类 包 子类 其他包
public ∨ ∨ ∨ ∨ (对任何人都是可用的)
protect ∨ ∨ ∨ × (继承的类可以访问以及和private一样的限) default ∨ ∨ × × (包访问权限,即在整个包内均可被访问) private ∨ × × ×(除类型创建者和类型的内部方法之外的任何人都不能访问的元素)
2016.11.27
枚举
该类依次列举出了该类所有对象的类型,不允许该类的变量赋值罗列出来的对象之外的值;
创建方法public enum Weeek{Monday,tuesday, ,, ,,,}Week a=Week.Monday;
enum关键字替换了class,隐式继承了Enum类,所以不允许再继承其他类;
该类的构造函数被定义为protected,只允许本类及类的子类访问;
枚举类的修饰符只能是public或者default;
构造函数Enum(String name, int ordinal) 单独的构造方法。name是该枚举对象的名字,ordinal是序号(从0 开始)
6.他的方法
a.name() a.ordinal();
2.16.11.27
内部类
- 成员内部类(编译后也有.class)
在外部类的类中创建,相当于一个外部类的成员;
a:可以在外部类的其他成员中直接创建内部类的对象,进行访问;
b:如果成员内部类的访问权限不是private,则可以在其他的地方通过如下来访问;
Outer.Inner inner= Outer.new Inner(参数); 用得较少;
c:类名.this.(Inner对象);this为当前; (注:在默认的访问权限下成员内部类与其他的成员可以相互调用)
- 静态内部类
修饰符为static;相当于外部类的静态成员;
a:可以在外部类的其他成员中直接创建内部类的对象,进行访问;
b:如果成员内部类的访问权限不是private,则可以在其他的地方通过如下来访问;
Outer.Inner inner= new Outer.Inner(参数); 用得较少;
c:与this无关,是外部类的静态成员,只能访问外部类的静态成员;
此时,外部类的成员方法可以访问该静态的方法;但是该内部类的静态的方法无法访问外部类中的非静态成员;外成----->内成;内成----->外静;
3.局部内部类
(什么时候使用:当看到函数的返回类型是接口,返回的是实现了该接口的类的对象,而且只需要在该函数中使用,那么可以在该类的函数中创建一个该类的内部类,内部类的返回值就是一个需要的对象;或者当看到函数的返回类型是抽象类,返回的是该抽象类的子类实例,只想在函数书中使用,那么可以在该类的函数中一个内部类,内部类返回的就是该外部类需要的子类实例)
a.一般声明在函数的内部,只在该函数中有效,会产生.class文件;
访问: Outer.函数名.内部类的方法();
4.匿名内部类(局部内部类的特殊情况)
a.什么时候用? (同局部内部类)
已经知道父类,获取其子类的实例对象;
已经知道接口,获取实现了该接口的类的对象;
匿名类在用的时候必须是直接获取该匿名类的对象(无类名); b.怎么用?怎么样获取对象呢?
公式: return new 父类or接口()
{
子类的实现 or 实现了该接口的类的实现
(实现就是实现父类或接口的方法)
}
(公式得到的就是实现后的对象,然后return整个,所以在前面加return)