平等运营商的微妙差异

时间:2015-05-28 18:14:57

标签: java

为什么if条件会在此程序中评估为true10如何等同于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");
         }
    }
}

2 个答案:

答案 0 :(得分:11)

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

  

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

答案 1 :(得分:3)

当我们将int与double进行比较时,

int将转换为double。请参阅此https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.21.1