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 falsevà truenhư 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 Integervà Float?
ivà i2hoàn toàn giống nhau Sau đó, khi bạn tạo Integers 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;...
newcho 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));