在 Java 中,是否保证新的 Integer(i) == i?
请考虑以下代码段:
int i = 99999999;
byte b = 99;
short s = 9999;
Integer ii = Integer.valueOf(9); // should be within cache
System.out.println(new Integer(i) == i); // "true"
System.out.println(new Integer(b) == b); // "true"
System.out.println(new Integer(s) == s); // "true"
System.out.println(new Integer(ii) == ii); // "false"
很明显,为什么最后一行将始终打印:我们使用引用标识比较,并且对象永远不会是已经存在的对象。"false"
==
new
==
问题是关于前3行:这些比较是否保证在原始,自动解装箱?是否存在原语将被自动装箱并执行引用标识比较的情况?(这将是所有的话!int
Integer
false