gpt4 book ai didi

java - 在 Java 中缓存装箱值

转载 作者:行者123 更新时间:2023-12-01 14:17:00 24 4
gpt4 key购买 nike

我有以下代码:

Integer first = new Integer(4);
Integer second = new Integer(4);
System.out.println(first == second);
Integer third = 4;
System.out.println(first == third);
System.out.println(second == third);

由于 4 介于 -128 到 127 之间,我希望包装 4 的 Integer 对象在第一次创建后被缓存,然后为其他装箱语句返回它,因此 '==' 检查必须返回 true。但对于以上三种情况它总是错误的。

为什么会这样?

最佳答案

因为这些分配是使用“new”关键字进行的,所以它们是创建的新实例,而不是从池中提取的。另请注意,整数池仅包含从 -128 到 127 的整数。对于更高的值,池不会发挥作用。

Integer third = 4;
Integer fourth = 4;
Integer fifth = 130;
Integer sixth = 130;
Integer seventh = 127;
Integer eighth = 127;
System.out.println(third == fourth); // 4==4 Return true
System.out.println(fifth == sixth); // 130==130 Returns false
System.out.println(seventh == eighth); // 127==127 Returns true

编辑正如评论中正确提到的那样,从 Java 1.6 开始,可以通过在命令行中使用 -XX:AutoBoxCacheMax=new_limit 来扩展自动框限制。

关于java - 在 Java 中缓存装箱值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61981497/

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