a == a是否有可能为Java中的某个变量a评估false?

Cal*_*die 2 java

关于Java的行为,我已经提出了这个有点模糊但有趣的问题.有任何想法吗?

st0*_*0le 7

是的,试试这个......

public class Main
{
  public static void main(String[] args)
  {
    double a = Double.NaN;
    if( a == a ) System.out.println("equal");
  }
}
Run Code Online (Sandbox Code Playgroud)

http://www.ideone.com/K0d2j


Tom*_*ine 6

是,for floatdouble NaNs(但不是FloatDouble).JLS第3版的第4.2.3节.我相信IEEE 754以这种方式定义了操作.这是唯一的案例.

  • @giddy - 它在C#中是相同的,并且是浮点数(双精度浮点数)的标准:[Double.NaN](http://msdn.microsoft.com/en-us/library/ system.double.nan.aspx) (2认同)