实用 AI

可在线运行 AI 集合,涵盖 AI 文案生成、写作辅助、AI 绘图与照片修复、AI 配音、字幕生成、语音转录以及 AI 视频创作和数字人等多种 AI 服务

查看详情

在Java中,使用equals和使用==比较对象有什么区别?

在Java中,==可以用来比较对象是否相等,那为什么要需要用equals方法比较呢?它们之间有什么区别,该如何使用?比如比较字符串。

String a = "test";
String b = "test";
System.out.println(== b);          //true
System.out.println(a.equals(b));     //true
javaequals==string
1
252
已修改
小课
小课2022-05-13 15:06
1 个回答

==比较的是两个对象的引用是否相等,用于比较判断是否同一个对象。而equals不一定是这样,equals方法是定义在Object中,其默认实现就是使用==来比较,如下

public boolean equals(Object obj) {
    return (this == obj);
}

但是我们可以重写这个方法实现自己的比较逻辑,就String类型而言,equals比较的是两个字符串的内容是否相等。

String a = "test";
String b = new String("test");
System.out.println(== b);       //false
System.out.println(a.equals(b));  //true

在提问的示例中,变量a和b是指向常量池中的同一个字符串对象“test”,但是在该示例中,字符串a指向的是常量池中的字符串对象,而字符串b指向的是堆中字符串对象,它们不是同一个对象,但是内容相同。在使用equals时,需要需要注意判空,防止出现NullPointerException,一般我们会使用Objects.equals()方法来比较,因为它内部为我们做了判空处理。

1
已修改
小课
小课2022-05-13 15:16
你的回答

内容