Я просто учился на своей Java в рамках подготовки к экзамену, и у меня возникла проблема с неинициализированными значениями int/Integer.Uninitialized int vs Integer
class A
{
int x;
Integer y;
static int z;
static Integer z2;
public A(){}
}
Скажем, я инициализирую объект класса А. A a = новый 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 в качестве панели взаимодействий, чтобы увидеть, если я хотел бы получить разные результаты, если мой х, 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
Теперь я не хочу сомневаться тот, кто пишет экзамен, но х == 0 и y == Значение истины истинно верно? Объяснение о том, почему было бы очень полезно, спасибо.
Если вам интересно, кто более правдоподобен, зная, что сделает компилятор: компилятор или ваш профессор ... ответ - это компилятор. –