我对以下代码段感到困惑。
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("i1 and i2 are different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("i3 and i4 Same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
输出是:
i1和i2是不同的对象
有意义地等于
i3和i4相同的对象
有意义地等于
我的问题是为什么i1和i2显示为i3和i4不同的不同对象。
答案 0 :(得分:0)
知道了。我没注意到范围
为了节省内存,
的两个实例以下包装器对象(通过装箱创建)在
时始终为==原始值是相同的:
■布尔
■字节
■从\ u0000到\ u007f的字符(7f为十进制127)
■-128到127之间的短整数