Почему я получаю исключение нулевого указателя в этом коде? - PullRequest
1 голос
/ 08 октября 2010
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);
    }
}

Вывод: Исключение в потоке "main" java.lang.NullPointerException на Test.go (Test.java:12) at Test.main (Test.java:8)

1 Ответ

3 голосов
/ 08 октября 2010

Это явно не ошибка. Вы получите NullPointerException во время выполнения, потому что вы распаковываете пустую ссылку (i) в примитив (j). См. JLS §5.1.8 .

Причина, по которой i равен нулю, заключается в том, что поля экземпляра по умолчанию инициализируются значением 0, пустым или ложным.

...