一.类的成员之四:代码块(或初始化块)
1.代码块的作用:用来初始化类、对象
2.代码块如果有修饰的话,只能使用static。
3.分类:静态代码块 vs 非静态代码块
4.静态代码块:
内部可以有输出语句
随着类的加载而执行,而且只执行一次
作用:初始化类的信息
如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
静态代码块的执行优先于非静态代码块的执行。
静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
5.非静态代码块:
内部可以有输出语句
随着对象的创建而执行
每创建一个对象,就执行一次非静态代码块
作用:可以在创建对象时,对对象的属性等进行初始化。
如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
非静态代码块内可以调用静态的属性、静态的方法。或非静态的属性、非静态的方法。
- 对属性可以赋值的位置:
①默认初始化;
②显示初始化;/⑤在代码块中赋值;
③构造器中初始化;
④有了对象以后,可以通过“对象.属性”或“对象.方法”进行赋值; - 执行的先后顺序:① - ②/⑤ - ③ - ④
总结:由父及子,静态先行。
二. final
关键字
final
:最终的;final
可以用来修饰的结构:类、方法、变量;final
用来修饰一个类:在此类不能被其他类所继承。比如:String
类、System
类、StringBuffer
类。final
用来修饰方法:表示此方法不可以被重写;比如Object
类中的getClass()
;native
关键字的意思:要调用底层的C或C++代码了。final
用来修饰变量:此时的“变量”就称为是一个常量。final
修饰属性:可以考虑赋值的位置有:显示初始化、代码块中初始化、构造器中初始化;final
修饰局部变量:尤其是使用final
修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用此形参,但不能重新赋值。static final
可以用来修饰属性:全局常量;还可以用来修饰方法(少见);