java – 混淆实例变量的初始化

前端之家收集整理的这篇文章主要介绍了java – 混淆实例变量的初始化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考试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打印.

好阅读:

> The Java™ Tutorials: Initializing Fields

猜你在找的Java相关文章