我什么时候可以使用“==”运算符?

时间:2014-05-22 11:03:45

标签: java reference equality jls

我从jls找到了引用:

  

可以使用相等运算符来比较两个操作数   convertible(§5.1.8)到数字类型,或两个boolean类型的操作数   或布尔值,或两个操作数,每个操作数都是引用类型或   null类型。所有其他情况都会导致编译时错误。

但是这段代码

   String str= "";
   Number num = 1;
   System.out.println(str == num);

每个操作数都是引用!

说它是不兼容的类型。

jls在哪里说这些类型应该兼容?

1 个答案:

答案 0 :(得分:5)

section 15.21.3中(参考等式运算符==和!=):

  

如果无法通过强制转换(§5.5)将任一操作数的类型转换为另一种操作数的类型,那么这是一个编译时错误。两个操作数的运行时值必然不相等。