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 的特点。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步