Неинициализированный int против Integer

Я только учился на Java, готовясь к экзамену, и столкнулся с некоторой проблемой с неинициализированными значениями int / Integer.

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

Допустим, я инициализирую объект класса A. A a = new A ();

Я попробовал это в компиляторе и получил результаты

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

Кроме того, я попытался выполнить несколько неинициализированных сравнений int / Interger на панели взаимодействий, чтобы увидеть, получу ли я другие результаты, если бы мои x, y не были переменными экземпляра класса, как указано выше.

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

Тем не менее, мой профессор утверждает в лекции, что значения должны быть следующими:

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

Теперь я не хочу сомневаться в том, кто пишет экзамен, но какое значение истинности x == 0 и y == равно null? Объяснение того, почему было бы очень цениться, спасибо.