众所周知,如果在-128到127的范围内通过==比较2个Integer类型的对象,那么它们会比较这些对象中的值,如果数字不在这个范围内,那么引用到将比较对象。问题是是否可以增加这个池的大小,如果可以,怎么做?通过 == 来比较和更大的数字,比如变成这样:
Integer a = 800;
Integer b = 800;
System.out.println(a == b); //true
众所周知,如果在-128到127的范围内通过==比较2个Integer类型的对象,那么它们会比较这些对象中的值,如果数字不在这个范围内,那么引用到将比较对象。问题是是否可以增加这个池的大小,如果可以,怎么做?通过 == 来比较和更大的数字,比如变成这样:
Integer a = 800;
Integer b = 800;
System.out.println(a == b); //true
在这两种情况下,都会比较参考。出于显而易见的原因,对于池中的数字,引用的相等性将是值的相等性。但是使用这是一个非常鲁莽的决定,因为数字缓存是特定 JVM 的特定版本的实现的一个特性,这意味着你的程序可能无法在另一个 JVM 上运行,甚至可能停止在下一个版本的 JVM 上运行。相同的JVM。
您仍然可以通过指定
-XX:AutoBoxCacheMax=<размер>.