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

发布于 2024-12-17 13:25:36 字数 432 浏览 1 评论 0原文

我正在准备 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,因为 ti 会调用getInt,然后将 k 增加到 21。

但是,答案是 1 20。我不明白为什么它会是1,有人能解释一下吗?

I'm studying up for the SCJP exam, upon doing some mock tests I came across this one :

It asks what is the output of the following :

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);
   }
}

I thought it would be 21 20, since t.i would invoke getInt, which then increments k to make 21.

However, the answer is 1 20. I don't understand why it would be 1, can anyone shed some light on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼波传意 2024-12-24 13:25:36

变量是从上到下初始化的。

发生的情况是这样的:

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

好读:

The variables are initialized from top to bottom.

This is what happens:

  1. Initially both i and k have the (default) value 0.
  2. The value computed by getInt() (which at the time is 0 + 1) is assigned to i
  3. 20 is assigned to k
  4. 1 20 is printed.

Good reading:

貪欢 2024-12-24 13:25:36

jvm会这样,

1.从上到下对非静态成员进行标识
2.从上到下执行非静态变量和块
3.执行构造函数......

第一步jvm将提供默认值..此时变量处于readindirectly write only状态..

jvm will follows like this,

1.identification for non-static members from top to bottom
2.executing non-static variables and blocks from top to bottom
3.executing the constructor......

in the first step jvm will provide default values..on that time variables in readindirectly write only state..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文