我读过这篇文章,负数和正数为零。
据我了解,以下代码应该给出true
和true
作为输出。
但是,它是给出false
和true
作为输出。
我正在将负零与正零进行比较。
public class Test {
public static void main(String[] args) {
float f = 0;
float f2 = -f;
Float F = new Float(f);
Float F1 = new Float(f2);
System.out.println(F1.equals(F));
int i = 0;
int i2 = -i;
Integer I = new Integer(i);
Integer I1 = new Integer(i2);
System.out.println(I1.equals(I));
}
}
为什么我们对于Integer
和的0会有不同的行为Float
?
i
并且i2
完全一样。然后,当您创建new时,Integer
它们都会包装完全相同的值。I1.equals(I)
会是真的。
int i = Integer.MIN_VALUE, i2 = -i;
……
new
包装类型。只需使用,例如Integer i = 0, i2 = -i; System.out.println(i.equals(i2)); Float f1 = 0f, f2 = -f1; System.out.println(f1.equals(f2));