gpt4 book ai didi

java - == Java中对象的运算符

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:00 25 4
gpt4 key购买 nike

我无法理解在以下代码中创建 obj 和 obj2 对象的方式的区别。特别是,我不确定如何将原语转换为对象。看看这里的其他一些问题,我认为这是不可能的。但是下面的程序编译并运行良好。在第一种情况下,输出为假,在第二种情况下为真。

public class Test {

public static void main(String args[]){

Integer num = new Integer(3) ;
Object obj = num;
Integer[] integerArr = {1, 2, 3, 4};
Object[] objArr = integerArr;
boolean contains = false;

for (int i = 0; i < objArr.length; i++){
if (objArr[i] == obj){
contains = true;
break;
}
}

System.out.println(contains);

int num2 = 3 ;
Object obj2 = num2;
Integer[] integerArr2 = {1, 2, 3, 4};
Object[] objArr2 = integerArr2;
boolean contains2 = false;

for (int i = 0; i < objArr2.length; i++){
if (objArr2[i] == obj2){
contains2 = true;
break;
}
}

System.out.println(contains2);
}

}

最佳答案

对象之间的 == 运算符测试身份(如果两个对象完全相同),而 equals() 方法测试对于相等(两个对象是否具有相同的值)。

大多数时候,您会对平等感兴趣。碰巧,您在问题中提供的示例实际上有效,因为 Integer 对象被缓存(通常在 -127 到 127 范围内,尽管这是可配置的),但是如果您使用更大的数字测试身份,测试很可能会失败。

例如,这将评估为 true:

Integer a = 127;
Integer b = 127;
a == b // true

而这将评估为 false!

Integer a = 128;
Integer b = 128;
a == b // false

底线:谨慎行事,始终使用 equals() 来测试对象之间的相等性。

关于java - == Java中对象的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236805/

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