这是自动装箱的副作用。你的说法 Float f1 = 120.0f;
但编译器使它成为 Float f1 = new Float(120.0f);
现在比较
(f1==120.00f) 将 f1 更改为浮点数(不知道为什么,但这就是正在发生的事情。其中 f1==f2 是对象比较并且由于它们引用不同的对象而失败。请参阅此代码:
public static void main(String[] args) {
Float f1 = new Float(120.0f);
Float f2 = new Float(120.00f);
System.out.println("f1 " + f1.floatValue() + ", f2 " + f2.floatValue());
System.out.println("f1 val == f2 val :" + (f1.floatValue() == f2.floatValue()));
if(f1==120.00f)
{
System.out.println("Equal");
}
else
System.out.println("Not Equal");
if(f1==f2)
{
System.out.println("Equal");
}
else
System.out.println("Not Equal");
if(120f==f2)
{
System.out.println("Equal");
}
else
System.out.println("Not Equal");
}
得到
f1 120.0,
f2 120.0
f1 值 == f2 值:真
平等的
不相等
平等的