java中equals与==的区别 - 面试宝典
【摘要】 在Java中,equals()与==是用于比较对象的两种不同方式。==运算符用于比较两个对象的引用是否相等。也就是说,它检查两个对象是否指向内存中的同一个地址。如果两个对象的引用指向相同的内存地址,那么==运算符返回true;否则返回false。equals()方法是Object类的一个方法,所有的Java类都继承了Object类。equals()方法在默认情况下执行与==相同的操作,比较两...
在Java中,equals()与==是用于比较对象的两种不同方式。
- ==运算符用于比较两个对象的引用是否相等。也就是说,它检查两个对象是否指向内存中的同一个地址。如果两个对象的引用指向相同的内存地址,那么==运算符返回true;否则返回false。
- 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)