1.示例程序:
1 class InitializeBlockClass 2 { 3 { 4 field=200; 5 } 6 public int field=100; 7 public InitializeBlockClass(int value){ 8 this.field=value; 9 } 10 public InitializeBlockClass(){ 11 12 } 13 } 14 15 public class InitializeBlockDemo { 16 public static void main(String[] args) { 17 18 InitializeBlockClass obj=new InitializeBlockClass(); 19 System.out.println(obj.field); 20 21 obj=new InitializeBlockClass(300); 22 System.out.println(obj.field); 23 } 24 25 }
2.运行结果
3.结果分析
(1)
{
field=200;
}
该部分为类的初始化块,可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。类的这种“没有名字”的“成员”,多用于初始化类的字段。
(2)
public int field=100; 在定义时进行初始化,此时field = 100;
(3)
System.out.println(obj.field); 输出field的值100
(4)
obj=new InitializeBlockClass(300);
System.out.println(obj.field);
利用构造方法进行初始化,field的值初始化为300,输出300
4.Java字段初始化的规律。
(1)执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。
(2)执行类的构造函数。
注:类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。