Java字段初始化规律

public class mm {

    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=200;
    }
    public int field=100;
    public InitializeBlockClass(int value){
        this.field=value;
    }
    public InitializeBlockClass(){

    }
}

结果:
"C:\Program Files\Microsoft\jdk-11.0.16.101-hotspot\bin\java.exe" "-javaagent:D:\IDEA2\IntelliJ IDEA Community Edition 2024.1.4\lib\idea_rt.jar=50829:D:\IDEA2\IntelliJ IDEA Community Edition 2024.1.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java code\untitled5\out\production\untitled5" mm
100
300

Process finished with exit code 0

先进行字段的初始化,field 被赋值为 100。
然后执行实例初始化块,field 被赋值为 200。
最后,构造函数执行结束。
字段的直接赋值是在对象创建时的第一步,然后执行初始化块,而后再执行构造函数。这种赋值顺序是 Java 的特点。

posted @   呓语-MSHK  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示