字段初始化的顺序是什么?

时间:2013-12-22 19:23:56

标签: java initialization

我在研究考试的模型问题时读到了这个问题。

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'?

2 个答案:

答案 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();