我正在准备 SCJP 考试,在做一些模拟测试时我遇到了这个:
它询问以下输出是什么:
class TestClass
{
int i = getInt();
int k = 20;
public int getInt() { return k+1; }
public static void main(String[] args)
{
TestClass t = new TestClass();
System.out.println(t.i+" "+t.k);
}
}
我认为它会是 21 20
,因为 t.i 会调用 getInt,然后递增 k 得到 21。
然而,答案是1 20
。我不明白为什么它会是 1,任何人都可以对此有所了解吗?
最佳答案
变量从上到下初始化。
是这样的:
- 最初
i
和k
都有(默认)值0
。 getInt()
计算出的值(当时是0 + 1
)赋值给i
20
分配给k
1 20
被打印出来。
良好的阅读:
关于java - 对实例变量的初始化感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218093/