gpt4 book ai didi

java - 整数构造变体

转载 作者:行者123 更新时间:2023-12-03 18:41:48 24 4
gpt4 key购买 nike

大家好,我遇到了一件有趣的事情,正在寻找解释。

在 Java 1.6 中:

Integer a = new Integer(5);
Integer b = new Integer(5);

System.out.println(a == b);

Integer c = 5;
Integer d = 5;

System.out.println(c == d);

我得到:

false
true

在 Eclipse 中,我检查了调试器。 ab 是不同的对象,而 cd 是相同的对象(但不同于 ab)。

谁能告诉我幕后发生的事情?这是 JVM 魔法吗?意识到 Integer(5) 已经在堆栈上了吗?

最佳答案

Java 缓存 Integer 实例以获得它认为足够接近零的值(如果它们是常量)。使用 new 手动创建 Integer 会绕过该缓存。您可以使用 int 调用 Integer.valueOf 来获取相应的 Integer 而无需绕过缓存。

您可能想在您选择的搜索引擎上搜索“JVM 整数缓存”以获取更多信息。

关于java - 整数构造变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5865056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com