关于Object类的equals()方法

// Object类 equals()方法

class Person{
String name;
int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
//下面是Object类中的equals()方法
public boolean equals(Object o){
return this==o; // 此处为什么不把o对象强制转换一下,写成 return this=(Person)o;啊?o是父类对象,this代表当前子类对象,怎么比啊?
}
}
public class example1 {
public static void main(String args[]){
Person p1=new Person("jay",25);
Person p2=new Person("jay",25);
Person p3=p1;
System.out.println(p1.equals(p2));
System.out.println(p1.equals(p3));
}
}

为什么要强制转换 o 对象?我们不需要管对象是属于什么类型
==和equals(),==比较的是对象的句柄,如果两个对象的句柄所引用的对象时同一块地址,则返回true;如果比较两个对象的内容是否相等则应该用equals(),但equals()不能用于主类型(即基本类型)。那些类型直接用==和!=即可如
//: EqualsMethod.java

public class EqualsMethod {

public static void main(String[] args) {

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.println(n1.equals(n2));

}

} ///:~ 返回TRUE

但是当你创建了自己的类时如

//: EqualsMethod2.java

class Value {

int i;

}

public class EqualsMethod2 {

public static void main(String[] args) {

Value v1 = new Value();

Value v2 = new Value();

v1.i = v2.i = 100;

System.out.println(v1.equals(v2));

}

} ///:~

此时的结果又变回了false,这是因为equals()的默认行为时比较句柄,除非你对equals的行为进行重写,大多数Java 类库都实现了equals(),所以它实际比较的是对象的内容,而非它们的句柄。

这样说够清楚了吧
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-03
==符号比较的是在内存的地址,和具体的类型没有关系。

你问怎么比,我先得知道你要“比”的规则是什么吧。

如果你觉得Person的name和age一样那这两个对象就一样,那你必须重写equals方法,让他能满足你的需求。

public boolean equals(Person per){
//里面你自己写吧
}
第2个回答  2010-03-03
非基本类型进行比较时,最好重写对象equals方法

java中equals和==的区别
一、equals()方法 equals()方法是Java.lang.Object类的一部分,它是用于比较对象的内容是否相等的方法。当我们使用equals()方法比较两个对象时,它比较的是这两个对象的值,即它们的状态或属性。例如,如果我们有两个String对象,它们包含相同的字符,那么使用equals()方法比较它们将返回true,即使它们在...

java中object是什么意思?
Java中的Object是所有类的超类,也就是说所有类都直接或间接继承自Object类。因此,Object类拥有所有类都具备的基本特征和方法,如equals()方法、hashCode()方法等。Object类的equals()方法用于判断两个对象是否相等,如果要使用equals()方法正确地比较两个对象的相等性,开发者必须重写equals()方法。此时,...

Java编程:Object类常见方法讲解
1. equals(Object obj) 方法 比较两个对象是否相等,地址相同返回true,值相等也返回true。例如:2. hashCode() 方法 返回对象的哈希码,用于比较对象相等性,常与equals方法一起使用。例如:3. toString() 方法 将对象转换为字符串表示形式并返回,默认为哈希码。例如:4. getClass() 方法 返回对象...

equals方法
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)比较的是地址(是否是同一个对象)。Object类中的equals方法public boolean equals(Object obj) {return (this == ...

java.lang.object方法使用说明
在Java中,equals()方法是一个关键的工具,用于比较两个对象的相似性。它位于Object类中,原始实现是通过检查两个对象是否指向同一内存位置。然而,这种简单的比较可能并不总是满足需求,因为即使内容相同的对象,由于内存分配的差异,也可能被视为不等。因此,如果你想要更深入地比较两个对象,通常需要在...

java.lang.object的方法使用说明
1、equals()方法:用于测试某个对象是否同另一个对象相等。它在Object类中的实现是判断两个对象是否指向同一块内存区域。这种测试用处不大,因为即使内容相同的对象,内存区域也是不同的。如果想测试对象是否相等,就需要覆盖此方法,进行更有意义的比较。例如class Employee{... \/\/此例子来自《java核心...

object.equals(null)和object==null有什么区别
object.equals(null),“equals()”方法是比较“值”是否相等;object==null,“==”比较运算符是用来比较“对象”是否是同一个。说的简单一点java是面向对象的编程语言:如果new了一个对象,那么它就有值,它的值可以是“null”;如果根本就没有new这个对象,那它就不存在,没有办法进行比较,就会...

Java中Object类的理解和使用
在Java编程中,根父类Object扮演着至关重要的角色。它是所有其他类的直接超类,无论是何种类型的类,都隐式地从Object派生而来。Object类包含了11个方法,但我们主要关注其中五个核心功能:equals()方法:所有类都继承了equals(),它用于比较对象。重写时需遵循原则:确保符号两边数据类型兼容,除非是自动...

java equals和==的区别
对于Object类来说 , equals和== 是一样的 , 可以看一下Object类的 equals方法:此时的equals 和 == 比较的都是 对象的内存地址 , 如果是基本数据类型 , 比较的是值 java中 , 所有类都是Object的子类 , 对于一些JDK提供的基础类 , 很多都复写了Object的 equals方法 , 比如String , 复写之后...

equals 的用法
equals 方法是 java.lang.Object 类的方法。有两种用法说明:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。比如:String s1,s2,s3 = "abc",...

相似回答