实用 AI

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

查看详情
加载中...

==比较的是两个对象的引用是否相等,用于比较判断是否同一个对象。而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