我在研究考试的模型问题时读到了这个问题。
class Was
{
private int a=show();
private int b=5;
private int show()
{
return b;
}
public static void main(String args[])
{
System.out.println((new Was()).a);
}
}
我编译了这个,它打印为0.为什么不打印为'5'?
答案 0 :(得分:4)
当调用构造函数并按声明顺序进行字段初始化时。这个字段
private int a=show();
在
之前初始化private int b=5;
使用show()
返回的值进行初始化。那时b
尚未初始化为5
。其默认值为0
。因此show()
会返回0
。该值已分配给a
。
答案 1 :(得分:1)
private int a=show();
当您调用show()
方法时,b
的值尚未设置,因此整数的默认值为0
结果。
查看所需的输出
private int b=5;
private int a=show();