平等运营商的微妙差异

Aam*_*mir 3 java

为什么if有条件的评估true在这个程序中?怎么10相当于10.0

 public class Test {
     public static void main(String[] args) {
         int i = 10;
         double d = 10.0;

         if (i == d) {
             System.out.println("hi");
         } else {
             System.out.println("bye");
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

Tag*_*eev 11

由于Java语言规范第5.6.2节中描述的二进制数字提升规则.这些规则适用于不同类型数字的二进制运算.它说:

如果任一操作数的类型为double,则另一个操作数转换为double.