@Test
public void testLong(){
Long a = 134L;
Long b = 134L;
System.out.println(a==b);
System.out.println(a.longValue()==b.longValue());
System.out.println(a.equals(b));
}
false
true
true
public static Long valueOf(long l) {
final int offset = 128;
if (l >= -128 && l <= 127) { // will cache
return LongCache.cache[(int)l + offset];
}
return new Long(l);
}
如果Long的值不在在-127~128之间,就会New一个新的对象,在内存中的地址就不一样了,所以就不能使用==来判断两个Long对象是否相等应该使用longValue()和equals()方法