Tôi đã đọc bài này tiêu cực và tích cực bằng không .
Theo hiểu biết của tôi, mã sau đây sẽ cung cấp true
và true
như là một đầu ra.
Tuy nhiên, nó là cho false
và true
như một đầu ra.
Tôi đang so sánh số 0 âm với số 0 dương.
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));
}
}
Tại sao chúng ta có hành vi khác nhau cho 0 Integer
và Float
?
i
và i2
hoàn toàn giống nhau Sau đó, khi bạn tạo Integer
s mới , cả hai đều bao bọc cùng một giá trị. I1.equals(I)
sẽ đúng
int i = Integer.MIN_VALUE, i2 = -i;
...
new
cho các loại trình bao bọc ở đây. Sử dụng chỉ, ví dụ:Integer i = 0, i2 = -i; System.out.println(i.equals(i2)); Float f1 = 0f, f2 = -f1; System.out.println(f1.equals(f2));