是的,这是预期的。您不应将对象引用与
==或进行比较
!=。您应该改用
.equals(..)或更好地使用原语
int而不是
Integer。
事实是,最多可缓存128个值,并且JVM为您提供相同的对象(因此引用比较起作用)。在128以上,它将创建一个新实例。查看的javadoc
Integer.valueOf(int)(这是在幕后发生的)
返回表示指定int值的Integer实例。如果不需要新的Integer实例,则通常应优先于构造方法Integer(int)使用此方法,因为此方法通过缓存经常请求的值可能会产生明显更好的空间和时间性能。



