类、对象、方法
1. 类里面只能有方法和变量,不能有具体操作,具体操作应放在方法里。
2. 方法参数
①基本数据类型值的参数是实参和形参之间值的传递,改变方法内形式参数的值不会影响到方法外部变量的值。
②对象(数组)类型的参数,参数值是对象(数组)的引用,在方法内对这个对象(数组)的修改都会影响到作为实际参数的原始数组。
3. 迭代方法组成:1. 终止条件 2. 简化步骤
注:终止条件应该放在简化步骤前面
4. 返回值非空的方法也可以当语句调用。
5. 类中的成员变量有缺省值,而方法中的局部变量没有缺省值。
6. 类声明的完整格式
[修饰符]class<类名>[extends <父类名>][implements<接口名>]
7. 成员变量定义的格式
[访问权限符][static][final]类型 变量1[,……]
8. 创建方法的格式
[修饰符][abstract][static][final]返回值类型 方法名([参数列表])
9. 不定长参数方法的语法:
返回值 方法名(参数数据类型…参数名称)
Eg:int mm(int …a) 等效于 int mm(int[]a) 其中a.length为参数的长度。
10. New操作,就是创建一个实例(自动调用构造方法)
11. Java中用finalize()方法(终止器)实现当对象即将被销毁时做的一些善后处理。
12. 类的构造方法
①无返回值 ②与类同名 ③当类没有任何构造方法时,系统会自动生成无参构造方法,自动生成的构造方法访问权限与类权限相同
13. 如果一个类中有多个构造函数,可实现其中一个,其他的构造函数通过this调用实现。对于重载方法,同样适用。
14. 实例成员只归该实例所有;静态成员归所有实例所共有,静态成员用static修饰,调用方式:类名.类静态成员;静态方法中只能包含静态成员。
Static方法中,只能使用static成员、确定实例、挂靠外部实例上的内部实例。
15. 主方法的形参(String[] args),arg[0]~arg[n-1]代表第1个到第n个参数,args.length表示形参的个数。
16. 方法重载:名字相同,参数不同,返回值随意。
17. 可以把多个类放在一个文件中,但是只能有一个是公用的(public),其他类对这个公用类起辅助作用。文件名必须与公用类同名。
18. 类的修饰符 public abstract final (默认时,可被同包访问)
19. 成员变量修饰符 public protected(同包、本类、该类的子类) private(本类) (默认时,可被同包访问)
20. 若不想别人创建类的实例,可以将构造方法定义为私有的。
21. Native关键字表明这个方法不是用java编写的,而是在java虚拟机中为本地平台实现的。
22. Final 修饰变量,此变量为常量
修饰方法,此方法不能被覆盖
修饰类,此类不能作为父类
23. Final变量(常量)
①可以修饰数组,数组内容为常量。
②可以修饰对象,对象引用不变,对象里的内容可变,若想均不变,可用static修饰。
③在对象中使用 static final 可以开辟一个恒定不变的区域。
④在声明时没有为final变量赋值,称为空白final,在构造方法中可以为空白final赋值。
⑤为方法设置final参数,方法体内不可以改变参数的值。
24. Final方法
①定义为final的方法,子类不能覆盖,且final方法效率比非final方法高。
②父类定义为private的方法,子类无法访问,自然无法覆盖。因此,父类定义为private final的方法,子类可重新写此方法,但该方法不是覆盖,而是新生成的。
25. 抽象类:将一个父类设计的非常抽象(一般、通用),没有具体实例的类。
语法:[修饰符] abstract class 类名
注:①不能使用new创建实例 ②抽象方法一定在抽象类中,只给头,不实现(eg:public abstract void mm(int);) ③非抽象子类必须实现抽象父类的所有抽象方法 ④抽象方法一定在抽象类中,抽象类可以包含非抽象方法
26. 强制类型转换
K mm =(K)nn; →→将父类实例nn转换为子类实例。
27. 使用instanceof运算符判断对象是否是某类的一个实例
语法:对象instanceof 类 →→ 返回值为Boolean
Eg: if(mm instanceof M){…..}
28. 若一个对象实例=null,即没有分配空间,则实例方法均不能使用,否则会报指针越界错误。
29. Static变量是在第一次使用类时初始化,instance变量是在声明实例时初始化
30. 对于void型方法,也可使用(return;)语句来终止方法。
31. 对象所属的实际类在运行时决定使用哪个方法以及相应的哪个实现
对象的声明类型在编译时决定使用哪个数据域和静态方法。
32. 内部类:在类里面定义的类。
①内部类可以直接调用它的外部类的数据和方法。
②内部类可以使程序简短易懂。
③内部类经编译后,它的名称如下:“外部类名称$内部类名称.class”
④使用原则:当一个事物包含另一个事物,另一个事物需要使用前一个事物的成员时,可以把另一个事物写成内部类。
33. 一般内部类(成员内部类)
成员内部类对象依赖于外部类对象而存在
声明方式: 外部类. 内部类 xx = 外部类对象 .内部类对象
this代表本类引用,外部类.this代表父类引用
34. 静态内部类
在内部类前添加static,这个内部类就变为静态内部类。
静态内部类可以有非静态成员
访问静态内部类静态成员 外部类.内部类.静态成员
访问静态内部类非静态成员 外部类. 内部类对象.非静态成员
35. 局部内部类
在方法内部定义的类。
36. 匿名内部类(用于简化代码书写)
语法:new 接口(父类) { 接口实现}; Or new 接口(父类){ 接口实现} . 方法();
注:匿名内部类编译后,生成“外部类名$序号.class”文件,序号以1~n排列,分别代表1~n个匿名内部类。
37. 静态成员与变量在编译时声明属于静态绑定,实例方法在运行时声明属于动态绑定。