未初始化的 int 与整数
2022-09-01 22:00:28
我刚刚在准备考试时学习Java,我遇到了一个未初始化的int/Integer值的问题。
class A
{
int x;
Integer y;
static int z;
static Integer z2;
public A(){}
}
假设我初始化了类 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比较,看看如果我的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 truth值是正确的?解释为什么将不胜感激,谢谢。