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”的引用是不同的。
但为什么在第二种情况下,结果是“真实的”呢?
我听说过一种观点,JVM为int值缓存对象从-128到127,以便进行一些优化。这样,“c”和“d”的引用是相同的。
有人能给我更多关于这种行为的信息吗?我想了解这个优化的目的。在什么样的情况下性能得到提高等。对这一问题的一些研究将有很大的参考价值。