java中equals与==的区别 - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/12 09:48:29 2023/08/12
【摘要】 在Java中,equals()与==是用于比较对象的两种不同方式。==运算符用于比较两个对象的引用是否相等。也就是说,它检查两个对象是否指向内存中的同一个地址。如果两个对象的引用指向相同的内存地址,那么==运算符返回true;否则返回false。equals()方法是Object类的一个方法,所有的Java类都继承了Object类。equals()方法在默认情况下执行与==相同的操作,比较两...

在Java中,equals()与==是用于比较对象的两种不同方式。

  1. ==运算符用于比较两个对象的引用是否相等。也就是说,它检查两个对象是否指向内存中的同一个地址。如果两个对象的引用指向相同的内存地址,那么==运算符返回true;否则返回false。
  2. equals()方法是Object类的一个方法,所有的Java类都继承了Object类。equals()方法在默认情况下执行与==相同的操作,比较两个对象的引用是否相等。但是,equals()方法可以被重写,以便根据对象的内容来进行比较。 重写equals()方法的常见做法是,比较对象的属性值是否相等。这样,即使两个对象的引用不同,但如果它们的属性值相等,equals()方法仍然会返回true。这是因为我们希望在比较对象时,根据实际需求来定义对象相等的标准,而不仅仅是比较引用。 总结:
  • ==用于比较对象的引用是否相等。
  • equals()方法用于比较对象的内容是否相等,可以被重写以根据实际需求定义对象相等的标准。

当我们比较两个对象的引用时,可以使用==运算符。例如:

javaCopy codeString str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // 输出true,因为str1和str2引用了同一个字符串常量池中的对象
System.out.println(str1 == str3); // 输出false,因为str1和str3引用了不同的对象,str3是通过new关键字创建的新对象

当我们希望比较两个对象的内容时,可以使用equals()方法。例如:

javaCopy codeString str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1.equals(str2)); // 输出true,因为equals()方法会比较字符串的内容是否相等
System.out.println(str1.equals(str3)); // 输出true,因为equals()方法会比较字符串的内容是否相等

在上面的示例中,我们可以看到,尽管str1、str2和str3的引用不同,但是通过equals()方法比较它们的内容时,结果仍然是相等的。这是因为String类已经重写了equals()方法,根据对象的内容来进行比较,而不仅仅是比较引用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。