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

gst*_*low 0 java equality reference jls

我从jls找到了引用:

等于运算符可用于将两个可转换的操作数(第5.1.8节)与数字类型,或两个类型为boolean或Boolean的操作数,或两个操作数(分别为引用类型或null类型)进行比较.所有其他情况都会导致编译时错误.

但是这段代码

   String str= "";
   Number num = 1;
   System.out.println(str == num);
Run Code Online (Sandbox Code Playgroud)

每个操作数都是参考!

说它是不兼容的类型.

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

Jon*_*eet 5

第15.21.3节(参考等式运算符==和!=):

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