Uninitialized int vs Integer

Ich habe mich gerade mit meinem Java vertraut gemacht, um mich auf eine Prüfung vorzubereiten, und bin auf eine Art Problem mit nicht initialisierten int / Integer-Werten gestoßen.

class A
    {
       int x;
       Integer y;
       static int z;
       static Integer z2;
       public A(){}   
    }

Sagen wir, ich initialisiere ein Objekt der Klasse A. A a = new A ();

Ich habe dies in einem Compiler ausprobiert und die Ergebnisse erhalten

a.x == 0; true
a.x == null; Static Error: Bad type in comparison expression
a.y == 0; java.lang.NullPointerException
a.y == null; true
a.z == 0; true 
a.z == null; Static Error: Bad type in comparison expression
a.z2 == 0; NullPointerException
a.z2 == null; true

Außerdem habe ich in einem Interaktionsfenster einige nicht initialisierte int / Interger-Vergleiche durchgeführt, um festzustellen, ob sich die Ergebnisse ändern, wenn meine x, y keine Klasseninstanzvariablen wie oben sind.

int x;
Integer y;
x == 0; true
x == null; Static Error: Bad type in comparison expression
y == 0; java.lang.NullPointerException
y == null; true

Mein Professor behauptet jedoch in einer Vorlesung, dass die Werte wie folgt lauten sollten:

x == 0; Uninitialized
x == null; Undefined
y == 0; java.lang.NullPointerException
y == null; Uninitialized

Jetzt möchte ich nicht daran zweifeln, wer die Prüfung schreibt, aber welcher x == 0 und y == null Wahrheitswert ist richtig? Eine Erklärung warum wäre sehr dankbar, danke.

Antworten auf die Frage(18)

Ihre Antwort auf die Frage