Вы правы, неинициализированным переменным класса в Java назначено значение по умолчанию. Тип Integer
в Java отличается от типа int
. Integer
- это класс-оболочка, который оборачивает значение примитивного типа int
в объекте.
В вашем случае iVar
- это ссылка на объект Integer
, который не был инициализирован. Неинициализированные ссылки получают значение по умолчанию null
, а когда вы пытаетесь применить метод intValue
() к нулевой ссылке, вы получаете NullPointerException
.
Чтобы вообще избежать этой проблемы, вам нужно, чтобы ваша ссылочная переменная ссылалась на объект Integer
как:
class Test {
// now iVar1 refers to an integer object which wraps int 0.
static Integer iVar1 = new Integer(0);
// uninitialized int variable iVar2 gets the default value of 0.
static int iVar2;
public static void main(String...args) {
System.out.println(iVar1.intValue()); // prints 0.
System.out.println(iVar2); // prints 0.
}
}