gpt4 book ai didi

java - 以下代码打印 "true, true, false, true"。不应该是 "true, true, true, true"吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:04 27 4
gpt4 key购买 nike

Integer i = 127;
Integer j = 127;
System.out.println(i == j);
System.out.println(i.equals(j));

Integer i1 = 128;
Integer j1 = 128;
System.out.println(i1 == j1);
System.out.println(i1.equals(j1));

我不明白为什么它不打印“true, true, true, true”。请给出答案?

最佳答案

当您使用 == 时,您是在比较对象实例 是否相等。

前两个实例相等的原因是您使用自动装箱(而不是调用 new Integer(127))创建了 Integers,并且 Java Language Specification §5.1.7 需要缓存介于 -128 和 127 之间的 Integers

实现可以缓存比这更多的值,但不是必需的;显然,您使用的 JVM 不会缓存 128。Sun Java 6 就是这种情况。

关于java - 以下代码打印 "true, true, false, true"。不应该是 "true, true, true, true"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499990/

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