我正在考试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,任何人都可以看出这一点吗?
解决方法
变量从上到下初始化.
这是怎么回事?
>最初,我和k都有(默认)值0.
>由getInt()(当时为0 1)计算的值被分配给i
> 20被分配给k
> 1 20打印.
好阅读: