摘自 《Junit Recipes》
令人震惊的是,虽然一个强大的面向对象的设计要求恰当的实现equals()方法,许多程序员却没有正确地做到这一点。如果你想正确地掌握本书介绍的技巧,那么你就必须恰当地实现一些类的equals()方法,尤其是那些用来存放数据的类。一般来讲,你不会去比较那些面向行为或者面向处理过程的类,但你需要去比较那些面向数值对象的类,因为那些面向处理过程的类会使用面向数值对象的类作为输入和输出。为了将这些数值对象存储到容器(比如List,Set,Map等)中,你需要恰当地实现其equals()和hashCode()方法[2]。当你对数值对象进行测试的时候,这就显得尤为重要,因为你将会花费大量的时间来判断两个数值对象或者两个基本数据类型是否相等。
注意:一个数值对象代表一个值,比如Integer、Money对象或者Timestamp对象。数值对象与其他的对象的不同在于:如果你有二十个不同的对象代表同一个值,那么这些对象就是可相互替代的。你是否使用内存中的同一个对象并不重要:如果你在内存中有三个代表5的数值对象,那么你使用一个来代替另一个不会影响程序的功能。换句话说,即使是内存中的不同对象,我的20美元与你的20美元也不会有什么不同。不过你需要通过恰当的实现equals()方法来反映这一点。
基本类型(包括整型,浮点型等)的封装类具有数值对象的特性,String也是这样。
如果你的对象不是数值对象,那么就无须去测试它们的相等性,当然也就不需要重载其equals()方法。这个原则对大多数情况都适用。
这里关键点就在于数值对象,数值对象的==符号才是验证其相等性。对象的Equals比较是内容相等,即内存中的内容。A.instansof B是来判断A对像是否是B类的实例.
分享到:
相关推荐
### Java中equals方法隐藏的陷阱 在Java编程中,正确实现`equals`方法至关重要,它不仅影响对象的比较逻辑,还直接关系到集合类(如`HashSet`、`HashMap`等)的行为。本文将深入探讨Java中`equals`方法的一些常见...
在Java编程语言中,了解如何正确使用`=...理解这两个方法的区别和使用场景,可以帮助我们编写出更加准确和可靠的代码。在处理对象比较时,一定要考虑到这些差异,特别是当涉及到自定义类和已重写`equals()`方法的类时。
在Java编程语言中,比较运算符`==`和`equals()`方法是用来检查两个对象是否相等的,但它们之间存在显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,我们来看`==`运算符。它主要用于基本数据类型的比较...
在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将详细介绍这两个方法的工作原理、使用场景以及它们之间的关系...
总的来说,理解并正确地重写 `equals()` 和 `hashCode()` 方法是Java编程中的基础技能,它有助于确保对象的比较和集合操作的正确性。在开发过程中,要时刻注意这两个方法的正确实现,以提高代码质量和可维护性。
在C#编程语言中,`Equals()`方法是一个用于比较对象是否相等的关键工具。这个方法在处理对象间的等价性判断时非常常见,特别是在需要确定两个变量或实例...理解和适当地使用`Equals()`方法是C#编程中的重要技能之一。
总的来说,理解并正确使用`equals()`和`hashCode()`方法对于编写高质量的Java代码至关重要,尤其是在处理集合框架中的对象时。这两个方法的合理实现能确保对象比较的正确性和哈希表操作的效率。希望这个深入解析能...
"equals(Object) 与 == 的区别" .equals(Object) 与 == 的区别是 Java 编程语言中一个常见的问题,许多初学者都感到困惑...equals(Object) 与 == 的区别是非常重要的,我们需要正确地理解和使用它们,以避免编程错误。
深入理解equals和hashCode方法 equals和hashCode方法是Java中Object类提供的两个重要方法,对以后的学习有很大的帮助。本文将深入剖析这两个方法,帮助读者更好地理解和使用它们。 equals方法 equals方法是用于...
总的来说,深入理解并正确实现`equals`方法是Java编程中的基础但关键的技能。这涉及到对Java对象模型的理解,以及如何根据对象的业务逻辑来定义“相等”的概念。通过遵循API规范和良好的编码习惯,我们可以确保`...
### Java中的`==`与`equals`方法的区别详解 在Java编程中,比较对象的...理解`==`与`equals`之间的区别对于编写正确且高效的Java代码至关重要。希望本文能帮助您更好地掌握这一概念,并在实际开发中避免常见的错误。
通过对 hashCode 和 equals 方法的深入分析,我们可以更好地理解 Java 集合的实现原理和哈希表的工作机制。 一、hashCode 方法简介 hashCode 方法是 Java 中 Object 类的一个方法,用于返回对象的哈希码值。这个...
`Equals`方法是.NET类库中的一个基本成员,主要用于比较对象是否相等。在某些情况下,尤其是自定义控件或者业务实体类的设计中,我们可能需要重写`Equals`方法来实现特定的比较逻辑。下面我们将深入探讨WinForm中...
Java 中的 == 和 equals 方法的区别 在 Java 中,比较值大小有两种方法:== 和 equals,这两个方法的使用场景和比较规则不同,下面我们将详细探讨它们的区别。 基本数据类型和引用数据类型 在 Java 中,有两种...
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。 hashCode()和equals()定义在Object类中,这...
在这篇文章中,我们将讨论关于 Java 中重写 equals 方法的种种坑,帮助大家更好地理解equals 方法的使用。 首先,我们需要了解为什么需要重写 equals 方法。有时候,我们需要比较两个对象是否逻辑上相等,而不是...
在Java编程语言中,`equals`方法与`==`操作符是进行...总结,`equals`方法和`==`操作符在Java中用于不同的目的,理解它们的差异可以帮助开发者更准确地进行对象比较。在处理对象比较时,应根据具体需求选择适当的方法。
在Java编程语言中,`equals()`, `hashCode()` 和 `toString()` 是三个非常重要的方法,它们主要用于对象的比较、哈希存储以及打印对象信息。这三个方法是Java对象的基础特性,对于理解和开发高质量的Java程序至关...
本篇文章将深入剖析“==”运算符和equals()方法的区别与联系,帮助你在Java的笔试和面试中更好地应对相关问题。 首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用...
本文主要关注 `List<T>` 的两个关键方法:`Contains()` 和 `Equals()`,以及它们在处理集合比较和去重时的作用。 `Contains()` 方法: 此方法用于判断 `List<T>` 是否包含指定的元素。它接受一个参数 `T`,即列表中...