理解Java中的operator ==

时间:2015-01-01 08:10:26

标签: java operators

JLS 8, chapt 15.21指定了两个名为floating point equality testinteger equality test的概念,如下所示:

  

如果操作数的提升类型是int或long,那么是整数   进行相等测试。

     

如果提升的类型是float或double,那么浮点数   进行相等测试。

浮点数的定义如下:

  

浮点相等测试按照以下方式执行   IEEE 754标准的规则:

因此,我们可以参考IEEE 754来描述浮点相等的行为。但是int怎么办? JLS指定它如何执行整数相等测试?

1 个答案:

答案 0 :(得分:2)

自Java中的int and all other integral types are signed two's complement以来,您不必担心有两种不同的方式来表示0。

由于您正在寻找参考,the JLS §4.2.提供了一个参考:

  

如果移位运算符以外的整数运算符至少有一个   long类型的操作数,然后使用64位执行操作   精度,数值运算符的结果类型为long。   如果另一个操作数不长,则首先将其扩展(第5.1.5节)以进行输入   长期通过数字推广(§5.6)。

     

否则,操作使用32位精度执行,并且   数值运算符的结果是int类型。如果是任一操作数   不是int,它首先通过数字提升扩展为int类型。