編譯器自動優化導致代碼可以先後寫的問題

public class Demo1 {
    static {
        test = 1;
//        System.out.println(test);
    }
    static int test;

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}


其實上面的代碼,編譯器會自動編譯爲:

import java.io.PrintStream;

public class Demo1
{
  static int test = 1;

  public static void main(String[] args)
  {
    System.out.println("Hello World!");
  }
}

所以導致沒有定義的,也可以先賦值。

注意問題:要有static的包圍着,static會讓編譯器自動優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章