这里他们是同一个实例:
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2); // outputs "true"
Run Code Online (Sandbox Code Playgroud)
但在这里他们是不同的实例:
Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2); // outputs "false"
Run Code Online (Sandbox Code Playgroud)
为什么包装器对象仅在值127内共享同一实例?
这是一个非常基本的问题我猜,但我不知道如何不遵守所以如果有人会这么善良
Object a = 128;
Object b = 128;
Log.debug("a: " + ((Integer) a == (Integer)b));
Log.debug("b: " + (((Integer) a).intValue() == ((Integer) b).intValue()));
Run Code Online (Sandbox Code Playgroud)
"a"为假而"b"为真,a = 127且b = 127均为真