Java中类成员的初始化

来源:互联网 发布:五十音图早道软件 编辑:程序博客网 时间:2024/06/06 13:56

在Java中对成员的初始化可以有多种选择,初始化的顺序需要考虑清楚,这样才能掌握依赖对象创建与初始化的时机,Java初始化先后顺序如下:

1)静态成员默认值。例:
private static int serial_no;
静态成员在被加载时将被初始化为其默认值,0、false或null,即对于值类型将会被初始化为0,boolean类型会被初始化为false,引用类型将被初始化为null。

2)静态初始化语句与初始化块。例:
private static int serial_no = 0;
private static string os_name;
private static boolean intialized;
static {
    initialized = true;
    os_name = “Windows”;
}

对于初始化语句与初始化块的执行顺序与其在类中的定义顺序相同。
对于变量间初始化具有依赖性时,为了保证被依赖的对象会先被初始化,可以用这种方法,在定义是不给赋值,而在静态初始化块中来初始化,使得初始化顺序不依赖于定义顺序,而依赖于初始化块中的语句,防止日后增加新的变量或重构时由于修改定义顺序而影响程序的行为。

3)非静态成员默认值。当对象被创建时在调时成员变量将会被初始化为默认值。

4)非静态成员初始化语句与初始化块,例:
private int var = 0;
private int var1 ;
private int var2 = ++var;
privaet int var3;
{
  var3 = ++var;
   var1 = ++var;
}

执行后的值分别为, var1==3, var2 == 1, var3 ==2。

5)父类构造函数。如果一个类继承自另外一个类,则父类的构造函数会先被调用。

6)构造函数。其实初始化块的代码完全可以放到构造函数中,这样更合适一些。

原创粉丝点击