gpt4 book ai didi

Java Stack peek() 行为

转载 作者:行者123 更新时间:2023-11-29 03:07:51 25 4
gpt4 key购买 nike

对于除 -128 和 127 之间的所有值,以下代码返回 false。这有什么特别的原因吗?我知道我必须使用 equals 因为 peek() 返回对对象的引用,但我很想知道为什么它只适用于上述值范围。

public boolean test(int x) {
Stack<Integer> s1 = new Stack<Integer>();
Stack<Integer> s2 = new Stack<Integer>();
s1.push(x);
s2.push(x);
return (s1.peek() == s2.peek());
}

最佳答案

有两个原因:

当你自动装箱时,一些 int xs1.push(x) 被转换成 s1.push(Integer.valueOf(x))。由于这是一个缓存值,因此这些值中​​的任何一个都会重复使用同一个实例。

根据 JRE 的实现,Integer 可能 也有比它更大的缓存——但不要依赖它 ;)

关于Java Stack peek() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156067/

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