Sie haben Recht, nicht initialisierten Klassenvariablen in Java ist der Standardwert zugewiesen. Integer
Geben Sie in Java nicht dasselbe ein wie int
. Integer
ist die Wrapper-Klasse, die den Wert des primitiven Typs int
in einem Objekt umschließt.
In Ihrem Fall ist iVar
eine Referenz auf ein Integer
Objekt, das nicht initialisiert wurde. Nicht initialisierte Verweise erhalten den Standardwert null
, und wenn Sie versuchen, die intValue
() -Methode auf einen Nullverweis anzuwenden, erhalten Sie die NullPointerException
.
Um dieses Problem zu vermeiden, insgesamt müssen Sie Ihre Referenzgröße auf ein Integer
Objekt als verweisen machen:
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.
}
}
Große Frage! Eine sehr einfache Verwechslung. –