そうです、Java の初期化されていないクラス変数には、デフォルト値が割り当てられています。Integer
Java の type は と同じではありませんint
。プリミティブ型の値をオブジェクトInteger
にラップするラッパークラスです。int
あなたの場合、初期化されていないオブジェクトiVar
への参照です。Integer
初期化されていない参照は のデフォルト値を取得し、null 参照に () メソッド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.
}
}