Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其
主要内容,而且要将 = =和 equals列为重要的对比概念来学习
1、声明格式
public boolean equals(Object obj)
其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false.
比如以下两个对象animal1和animal2,引用不同的对象,因此用==或equals()方法比较的结果为false;而animal1和animal3变量引用同一个DOg对象,因此用= =或者equals()方法比较的结果为true.
Animal animal1=new Dog();
Animal animal2=new Cat();
Animal animal3=animal1;
则animal1==animal2 (FALSE)
animal1.equals(animal2) (false)
animal1==animal3 (true)
animal1.equals(animal3) (true)
而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:
java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)
比如
Integer int1=new Integer(1);
Integer int2=new Integer(1);
String str1=new String("hello");
String str2=new String("hello");
int1==int2 输出:false,因为不同对象
int1.equals(int2) 输出:TRUE
str1==str2 (false)
str1.equals(str2) (true)
当然,可以自定义覆盖object类的equals()方法,重新定义比较规则。比如,下面Person类的equals()比较规则为:只要两个对象都是Person类,并且他们的属性name都相同,则比较结果为true,否则返回false
public class Person{
private String name;
public Person(String name)
{
this.name=name;
}
public boolean equals(Object o)
{
if (this==0) return true;
if (!o instanceof Person) return false;
final Person other=(Person)o;
if (this.name().equals(other.name()))
return true;
else
return false;
}
}
注意,在重写equals方法时,要注意满足离散数学上的特性
1、自反性 :对任意引用值X,x.equals(x)的返回值一定为true.
2 对称性: 对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3 传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4 一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5 非空性:任何非空的引用值X,x.equals(null)的返回值一定为false
分享到:
相关推荐
在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...
### Java中equals与==的比较 #### 一、概述 在Java编程语言中,`equals`方法和`==`操作符都是用来比较对象之间是否相等的重要工具,但它们之间存在显著的区别。理解这些差异对于编写高效且无误的代码至关重要。 #...
### Java中的`==`与`equals`方法的区别详解 在Java编程中,比较对象的相等性是一个常见的需求,但很多初学者对于`==`运算符与`equals`方法的区别容易混淆。本文将深入探讨两者之间的差异,以及它们在不同场景下的...
总结,理解`equals()`和`==`的区别是Java编程中的关键知识点。在使用时,根据需要比较的是对象的引用还是内容,选择适当的操作符或方法。对于String类,由于其特殊的常量池机制,`==` 和 `equals()` 的行为可能与...
Java中equals()知识点总结 equals()方法是Java中一个常用的方法,它用于比较两个对象是否相等。下面我们将详细讲解equals()方法的使用和覆盖。 首先,我们需要了解equals()方法的本意。在Object对象中定义的...
总结来说,Java中的`equals()`方法通常用于比较对象的内容,而`==`操作符用于比较对象的引用或基本类型的值。在使用`String`时,要理解字符串池的作用,并根据需求合理使用`==`和`equals()`,以及`intern()`方法。...
在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别和用法对于任何Java开发者来说都至关重要,特别是对于那些正在积累Java开发经验的人来说。 首先,让我们...
总结一下,`equals()` 和 `==` 在Java中的主要区别在于: 1. `==` 对于基本类型比较值,对于引用类型比较引用。 2. `equals()` 默认行为与 `==` 相同,但在多数情况下已被重写以比较对象内容。 3. `intern()` 方法...
Java中equals()方法重写实现代码详解 Java中equals()方法是Object类中定义的,作为所有类的父类,任何类都隐含地继承了该方法。 equals()方法用于判断两个对象的内容是否相同,如果没有重写该方法的类,需要重写该...
在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间存在着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员...
小结 在 Java 中,== 操作符比较的是变量的值或地址值,而 equals() 方法比较的是对象的内容。对于基本类型的变量,== 操作符比较的是值是否相同;对于引用类型的变量,== 操作符比较的是地址值是否相同。equals() ...
总结来说,`equals()`和`hashCode()`是Java中用于对象比较和哈希存储的关键方法。它们的正确使用和重写对于确保对象比较的逻辑性和哈希表操作的效率至关重要。在自定义类中,应根据对象的属性和业务逻辑来重写这两个...
### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...
在 Java 编程语言中,`equals()` 和 `==` 是两种常见的用于比较对象的运算符,但在处理字符串时,它们的行为有所不同。本文将详细解释它们的区别,并提供示例进行说明。 1. `equals()` 方法 `equals()` 方法是 ...
在Java编程语言中,了解`==`和`equals()`的区别是非常重要的,这涉及到对基本类型和对象的正确比较。下面我们将详细探讨这两个操作符的工作原理及其在不同情况下的使用。 首先,`==`操作符主要用于比较基本类型的...
Java equals()方法使用详解及总结 Java 中的 equals() 方法是一个非常重要的方法,它用于比较两个对象是否相等。该方法在 Object 类中定义,所有的 Java 对象都继承自 Object,因此都拥有这个方法。但是,Object ...
总结一下,`Java`中的`equals()`方法是用于比较对象内容是否相等的关键工具,对于基本类型的包装类如`Short`,`equals()`方法已经进行了重写,以比较它们的数值而不是引用。理解并正确使用`equals()`方法对于编写...
### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`与`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...
总结来说,Java中的“==”和“equals()”在比较对象时有着不同的含义。“==”主要检查对象引用的相等性,而“equals()”(尤其是经过重写后)则关注对象内容的相等性。理解并恰当使用这两个方法,是成为一名合格的...