Я только учился на своей Java в рамках подготовки к экзамену, и у меня возникла проблема с неинициализированными значениями int/Integer.
class A
{
int x;
Integer y;
static int z;
static Integer z2;
public 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 истинны? Объяснение о том, почему было бы очень полезно, спасибо.