在Java中的整数缓存

25 浏览
0 Comments

在Java中的整数缓存

可能重复:

奇怪的Java装箱

最近我看到一个演示,其中有以下Java代码示例:

Integer a = 1000, b = 1000;  
System.out.println(a == b); // false  
Integer c = 100, d = 100;  
System.out.println(c == d); // true

现在我有些困惑。我明白为什么第一种情况的结果是"false" - 这是因为Integer是一个引用类型,而"a"和"b"的引用是不同的。

但为什么第二种情况的结果是"true"?

我听说过一个观点,即JVM为了某些优化目的,对-128到127之间的int值进行对象缓存。这样,"c"和"d"的引用是相同的。

有人可以给我更多关于这种行为的信息吗?我想了解这种优化的目的。在哪些情况下性能会提高,等等。如果能提供一些与此问题相关的研究参考资料就更好了。

0