java类初始化顺序

public class InitializeBlockDemo {


    public static void main(String[] args) {
        
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);
        
        obj=new InitializeBlockClass(300);
        System.out.println(obj.field);
    }

}

class InitializeBlockClass{
    //下面这句在初始化块之前与之后,会影响到field字段的初始值
    //public int field=100;
    
    {
        field=200;
    }//初始化块
    public int field=100;
    public InitializeBlockClass(int value){
        this.field=value;
    }
    public InitializeBlockClass(){
        
    }
}

上面一段代码,执行结果上会因为类的“初始化块”和“成员定义时的初始化”位置不同而导致其运行结果不同,这就证明了在java类中初始化块与成员定义时的初始化并不存在执行优先级的区分,而是根据他们位置执行,实例成员的值会是最后运行的部分所赋予的值。

你可能感兴趣的:(java类初始化顺序)