Я только учился на 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 == равно нулю? Объяснение того, почему было бы очень признательно, спасибо.