ฉันได้อ่านโพสต์เชิงลบและเชิงบวกศูนย์
เพื่อความเข้าใจของฉันรหัสต่อไปนี้ควรให้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));
}
}
ทำไมเราถึงมีพฤติกรรมที่แตกต่างกันสำหรับ 0 สำหรับInteger
และFloat
?
i
และi2
เหมือนกันทุกประการ จากนั้นเมื่อคุณสร้างใหม่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));