Antwort

22

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. 
} 
} 
+0

Danke codaddict. Es macht jetzt Sinn. – user292844

1

Es bedeutet, dass iVar ist null. In Java können Sie keine Methoden für eine NULL-Referenz aufrufen. Sie generiert die NullPointerException, die Sie sehen.

Verwandte Themen