在实例化对象时java是会先声明类属性再按照顺序赋值吗

2024-11-27 14:53:31
推荐回答(1个)
回答(1):

//举例说明
public class P {
{
//1、输出a=0
System.out.println("a="+this.a);
a=6;
//2、输出a=6
System.out.println("a="+this.a);
}
int a=9;
public static void main(String[] args) {
//3、输出a=9
System.out.println("a="+new P().a);
}
}
/*为什么是按1、2、3的顺序输出?
分析:
首先,new P().a中的new会分配内存,并将a初始化为默认值0(即用0填充分配的内存),所以先输出1;
其次,字段的赋值与初始化块的执行是按顺序执行的(谁在前就先执行谁),所以先执行初始化块中的a=6;后执行int a=9;中的赋值操作,最后a的值是9。
*/