Integer int ==
Integer and Long cache numbers between -128 and 127.
public void testIntegerCache() { Integer i = 123; Integer j = 123; assertTrue(i == j); Integer heapK = new Integer(123); assertFalse(i == heapK); // heapK is auto-unboxed to the primitive value 123 assertTrue(123 == heapK); // when value is beteween [-128, 127], java returns from its constant cache assertTrue(Integer.valueOf("123") == Integer.valueOf("123")); Integer cacheL = Integer.valueOf("123"); assertTrue(i == cacheL); }
Integer and Long cache numbers between -128 and 127.
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }String ==
public void testStringIntern() { String a = "123"; String b = "123"; // There is only one 123, stored in java string constant pool. assertTrue(a == b); String heapC = new String("123"); assertFalse(a == heapC); String internD = new String("123").intern(); assertTrue(a == internD); // Special case assertTrue(String.valueOf(Integer.MIN_VALUE) == String .valueOf(Integer.MIN_VALUE)); assertFalse(String.valueOf(Integer.MAX_VALUE) == String .valueOf(Integer.MAX_VALUE)); }Boolean boolean ==
public void testBoolean() { boolean a = true; Boolean b = new Boolean(true); // auto-unbox, here Boolean b is auto-unboxed to the primitive boolean true. assertTrue(a == b); Boolean c = Boolean.valueOf("1"); // different object assertFalse(b == c); // Boolean.valueOf actually returns one of two static final instance: TRUE, // FALSE Boolean d = Boolean.valueOf("1"); assertTrue(c == d); }