为什么Object == null有效?

Mee*_*epo 0 java object

因此,当我们比较对象时,我们使用equals()方法,或者在if语句中使用类似的东西.如果我们有以下代码

String a = "foo";
String b = "foo";
return a==b
Run Code Online (Sandbox Code Playgroud)

因为a和b引用不同的对象,我们会将错误返回给我们.另一方面,

String a = null;
return a == null
Run Code Online (Sandbox Code Playgroud)

我们会成真的.这是为什么?

use*_*421 5

为什么Object == null工作?

这并不意味着什么.对象不是Java中的值.你不能写那个.你能写的就是someObjectReference == null.

所以当我们比较对象时

我们不是.往上看.我们正在比较参考文献

例如,我们在if语句中使用equals()方法或类似的方法.如果我们有以下代码

String a = "foo";
String b = "foo";
return a==b
Run Code Online (Sandbox Code Playgroud)

因为a和b引用不同的对象,我们会将错误返回给我们.

不,我们不会,也不会.它会返回true.试试吧.字符串文字由Java汇集.只有一个"foo"对象.

另一方面,

String a = null;
return a == null
Run Code Online (Sandbox Code Playgroud)

我们会成真的.这是为什么?

因为引用的a值为null,所以==运算符的RHS上的表达式值也是如此.等值=>结果==true.请注意,这a是一个引用,而不是一个对象.