gpt4 book ai didi

java - 对实例变量的初始化感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:32 25 4
gpt4 key购买 nike

我正在准备 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,任何人都可以对此有所了解吗?

最佳答案

变量从上到下初始化。

是这样的:

  1. 最初 ik 都有(默认)值 0
  2. getInt() 计算出的值(当时是0 + 1)赋值给i
  3. 20 分配给 k
  4. 1 20 被打印出来。

良好的阅读:

关于java - 对实例变量的初始化感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com