gpt4 book ai didi

java - 整数比较值的错误输出

转载 作者:搜寻专家 更新时间:2023-11-01 04:06:30 24 4
gpt4 key购买 nike

我有以下代码。

public static void doIntCompareProcess() {
int a = 100;
int b = 100;

Integer c = 200;
Integer d = 200;

int f = 20000;
int e = 20000;

System.out.println(c == d);
compareInt(e, f);
compareInt(a, b);
}

public static void compareInt(Integer v1, Integer v2) {
System.out.println(v1 == v2);
}

这给了我这个输出:

false
false
true

当前输出应该在哪里:

false
false
false

为什么我得到错误的代码输出?

最佳答案

最后一行对应:

compareInt(100, 100);

由于 compareInt() 需要两个 Integer 对象,所以这两个参数会自动装箱。在此过程中,Integer(n) n 的小值实例将被驻留。换句话说,compareInt() 接收对同一Integer(100) 对象的两个引用。这就是导致最后一个比较结果为 true 的原因。

参见 Using == operator in Java to compare wrapper objects

底线是不要使用== 运算符直接比较Integer 对象。如需进一步讨论,请参阅 https://stackoverflow.com/a/1515811/367273

关于java - 整数比较值的错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596704/

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