猜猜下面几条语句会输出什么?
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 1000;
Integer i4 = 1000;
System.out.println(i1==i2);
System.out.println(i3==i4);
System.out.println(0L == 0);
System.out.println(((Long)0L).equals(0));
要想得到正确的结果,必须知道下面这个规则:
如果values between -128 and 127,VM使用相同的对象,否则创建新的对象。请看下面的JDK源码:
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);
}
一个关于Java数据类型的有趣问题
最新推荐文章于 2024-11-11 00:03:55 发布