【问题标题】:Instance Static variable not initialize in method if method is called above it如果在其上方调用方法,则实例静态变量不会在方法中初始化
【发布时间】:2016-06-08 08:59:34
【问题描述】:
public class MainClass {
   static final int i = GetI();
   static int j = 9;

   public static void main(String[] args) {
      System.out.println("i value : " + i);
   }

   static int GetI() {
      return j;
   }
}

上面的代码打印 'i value : 0'
1. 但是,该方法应该返回 j 的值,即 9,因此 i 的值将是 9。
2.如果我们将变量j设为final,那么输出将是'i value : 9',这很好。

可能是什么原因?
谢谢。

【问题讨论】:

    标签: variables static instance final


    【解决方案1】:

    您已经在变量 i 初始化后声明了变量 j。在 main 方法中,您正在访问调用 GetI() 方法的 i。 GetI() 方法返回 j,直到此时 j 未被初始化。访问 j 也没有出错,因为它被声明为静态变量,它的范围是类 lebel。输出为 - 0,因为 int 的默认值为 0,如果未初始化则使用该值。 尝试 - 在 i 之前声明变量 j 然后输出将是你想要的 9。这样做,将在稍后使用之前初始化变量 j。 希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 2012-05-25
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多