gpt4 book ai didi

java - == 和 equals() 之间的区别

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

我有一个问题。我不知道这有什么意义,但我真的需要一个答案

当我使用“==”时

Integer i1 =10;
Integer i2 = 10;
if(i1 == i2) {System.out.println("same object")}

输出=相同的对象

但是,如果我使用“==”

String obj1 = new String("xyz");

String obj2 = new String("xyz");

if(obj1 == obj2)
System.out.println("obj1==obj2 is TRUE");
else
System.out.println("obj1==obj2 is FALSE");

输出=假

我知道“==”运算符会查找对象的内存位置。但是第一个例子中发生了什么; i1 和 i2 不是不同的对象吗?

最佳答案

有用于小整数的内部缓存/池。因此 == 检查返回 true,因为它们指向同一个实际对象。

OP,顺便说一句,在您的问题中,您输入了“if(i1==12)”而不是“if(i1==i2)”。

示例 1:

public class Test001
{

public static void main(String args[]) {
Integer i1 = 10;
Integer i2 = 10;
if(i1==i2) {System.out.println("same object 1");}

i1 = 10024;
i2 = 10024;
if(i1==i2) {System.out.println("same object 2");}
}
}

它仅打印“相同对象 1”,该对象演示了缓存/池点。

将 i1 和 i2 分配给文字 10 的事实在这里很重要。如果您执行 new Integer(10) 那么它们将指向不同的对象。

示例 2:

public class Test001
{

public static void main(String args[]) {
Integer i1 = 10;
Integer i2 = 10;
if(i1==i2) {System.out.println("same object 1");}

i1 = new Integer(10);
i2 = new Integer(10);
if(i1==i2) {System.out.println("same object 2");}

i1 = 10024;
i2 = 10024;
if(i1==i2) {System.out.println("same object 3");}
}
}

这个也只打印“same object 1”。

关于java - == 和 equals() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21144071/

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