Java 中的整数缓存
2022-08-31 15:55:32
可能的副本:
奇怪的Java拳击
最近我看到一个演示文稿,其中是以下Java代码示例:
Integer a = 1000, b = 1000;
System.out.println(a == b); // false
Integer c = 100, d = 100;
System.out.println(c == d); // true
现在我有点困惑。我理解为什么在第一种情况下结果是“假的” - 这是因为整数是一种引用类型,“a”和“b”的引用是不同的。
但是,为什么在第二种情况下,结果是“真的”呢?
我听说过一种观点,即JVM缓存对象的int值从-128到127,用于一些优化目的。这样,“c”和“d”的引用是相同的。
任何人都可以给我更多关于这种行为的信息吗?我想了解此优化的目的。在什么情况下性能得到提高,等等。参考这个问题的一些研究会很棒。