我正在研究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);
}
}
Run Code Online (Sandbox Code Playgroud)
我以为会是这样21 20,因为ti会调用getInt,然后将k增加到21.
但答案是1 20.我不明白为什么会这样,有人可以对此有所了解吗?
aio*_*obe 17
变量从上到下初始化.
这是发生的事情:
i并k有(默认)值0.getInt()(当时是0 + 1)计算的值被分配给i20 分配给 k1 20 打印出来.好读:
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |