なぜこのコードでnullポインターの例外を取得できるのですか?

StackOverflow https://stackoverflow.com/questions/3887709

  •  28-09-2019
  •  | 
  •  

質問

public class Test {

    Integer i;
    int j;

    public static void main ( String [] args ) {
       Test t = new Test ();
       t.go();
    }

    public void go() {
       j=i;
       System.out.println(j);
       System.out.println(i);
    }
}

出力: test.go(test.java:12)のtest.go(test.java:8)のスレッド「main」java.lang.nullpointerexceptionの例外

役に立ちましたか?

解決

それは明らかにエラーではありません。ヌルの参照を解き放つため、ランタイムnullpointerexceptionを取得します(i)プリミティブに(j)。 JLSを参照してください §5.1.8.

理由 i nullは、インスタンスフィールドがデフォルトで0、null、またはfalseに初期化されるということです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top