首页 > Java > java教程 > 对象比较时 `==` 和 `Equals()` 有什么区别?

对象比较时 `==` 和 `Equals()` 有什么区别?

Patricia Arquette
发布: 2024-11-26 02:14:11
原创
312 人浏览过

What's the Difference Between `==` and `Equals()` for Object Comparison?

理解 == 和 Equals/equals 之间的区别

在比较编程语言中的对象时,区分引用相等和值相等至关重要。这种区别出现在 == 和 Equals/equals 运算符之间。

与 == 的引用相等

Java 和 C# 中的 == 运算符(除非被重写)都执行参考平等。它评估两个对象是否共享相同的内存位置。这意味着如果对象是同一实例,则 == 将返回 true;如果对象是不同实例,则返回 false。

值与 Equals/equals 相等

相反, Equals/equals 方法比较两个对象的值。 Object 类中的默认实现检查引用相等性,但它可以被派生类覆盖以实现值相等。这意味着即使对象是不同的实例但具有相同的值,Equals/equals 也可以返回 true。

主要区别

Feature Reference Equality (==) Value Equality (Equals/equals)
Comparison Memory location Value
Overloading Not supported Supported in C# for some types
Null values Throws an exception if one object is null Treats null as an unequal value
Object class implementation Identity comparison Identity comparison
Potential for overrides No Yes

示例

考虑以下 Java code:

String str1 = "Hello";
String str2 = new String("Hello");

System.out.println(str1 == str2); // false (reference equality)
System.out.println(str1.equals(str2)); // true (value equality)
登录后复制

在此示例中,== 返回 false,因为 str1 和 str2 是不同的实例,即使它们具有相同的值。然而,Equals 返回 true,因为它比较值。

结论

理解引用相等 (==) 和值相等 (Equals/equals) 之间的区别对于Java 和 C# 中的准确对象比较。通过适当地利用这些运算符,您可以确保正确的行为并避免代码中出现意外结果。

以上是对象比较时 `==` 和 `Equals()` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板