如何重写Java中的equals方法

如题所述

//在你的类A中定义一个签名为
//@Override
//public boolean equals(Object obj)的方法就能重写(覆盖)Object类的同名方法了,
//以后调用equals方法比较两个类A的对象的相等性时,就会调用你重写的方法了。
//看例子。
public class Demo
{
public static void main(String[] args)
{
A a1=new A(1,'a'),a2=new A(1,'b'),a3=new A(1,'a');
//调用类A的重写的equals方法比较3个对象的相等性
//false
System.out.println(""+a1.equals(a2));
//true
System.out.println(""+a1.equals(a3));
//false
System.out.println(""+a2.equals(a3));
}
}
class A
{
A(int n,char c)
{
this.n=n;
this.c=c;
}
//@Override可省略
@Override
public boolean equals(Object obj)
{
System.out.println("调用了重写的类A的equals方法。");
boolean r=false;
A a;

if(obj instanceof A)
{
a=(A)obj;
r=(this.n==a.n && this.c==a.c);
}
return r;
}
private int n;
private char c;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

Java中关于==和equal的区别 以及equals方法重写
1.==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同 2.==是指对内存地址进行比较 equals()是对字符串的内容进行比较 3.==指引用是否相同 equals()指的是值是否相同 重写equals:public boolean equals(Object anObject) { if (this =...

Java中关于==和equal的区别 以及equals方法重写
Java中关于==做数值上的比较,包括boolean,地址值 equal做对象内容上的比较 equals重写:public boolean equals(Object obj) { if(this == obj)return false;if(obj == null)return false;if(getClass() != obj.getClass() )return false;MyClass other = (MyClass)obj;if(str1 == null) ...

重写equals 方法的注意事项
如果一定要重写呢,有没有比较省力不容易出错的方法?答案是有的,那就是使用google 的AutoValue开源框架或者IDE自动生成功能。如果使用AutoValue框架,只需要在类上添加一个注解,框架就会自动帮你生成equals方法。如果一定要自己重写,在重写之后要问自己三个问题:它是对称的吗?它是传递吗?它是一致的吗?...

如何正确的重写equals 和 hashCode方法
\/\/Prints false in console System.out.println(e1.equals(e2));} } 毫无疑问,上面的程序将输出false,但是,事实上上面两个对象代表的是通过一个employee。真正的商业逻辑希望我们返回true。 为了达到这个目的,我们需要重写equals方法。public boolean equals(Object o) { if(o == null){ return ...

Java中关于==和equal的区别 以及equals方法重写
1. == 是一个运算符。2.Equals则是string对象的方法,可以.(点)出来。我们比较无非就是这两种 1、基本数据类型比较 2、引用对象比较 1、基本数据类型比较 ==和Equals都比较两个值是否相等。相等为true 否则为false;2、引用对象比较 ==和Equals都是比较栈内存中的地址是否相等 。相等为true ...

JAVA中equals的定义,用法,方法重写是怎么回事
如果我理解没错的话你说的应该是最初出现在Object类里的equals方法吧。在这里我说一下我对这个方法的理解,仅供参考。这个函数的用法是:比较[调用这个方法的对象]和[方法传递进去的参数对象]是否相等。重写这个方法,意思是让你定义两个对象如何才算是相等。这样给了你极大的灵活性。因为比较两个对象...

Java中关于==和equal的区别 以及equals方法重写
“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。public boolean equals(Object obj) { if(this == obj)return false;if(obj == null)return false;if(getClass() != obj.getClass() )return false;MyClass other = (MyClass)obj...

equals()方法重写
String的equals()方法的重写是写在java.lang.String里面的,不是在这里,这里只是个示意例子,让你比较 == 和 equals方法的不同 ===这是String中重写后的equals()方法 \/ Compares this string to the specified object. The result is {@code true} if and only if the argument is not {@co...

为什么重写equals()的时候要重写hashCode()?
equals()方法用于比较两个对象是否相等。在Java中,使用==或equals()方法进行比较。后者适用于引用类型,比较的是对象的字段值而非内存地址。默认情况下,equals()方法通过比较对象的内存地址实现,这在大多数情况下是没有意义的。因此,为了实现引用类型之间的有意义的比较,需要重写equals()方法,以比较...

java中equals使用方法
在Java中,equals方法主要用于判断两个对象是否相等。这是对象间比较的一种重要方式。具体使用方法如下:答案:Java中的equals方法用于比较两个对象的内容是否相等。默认情况下,equals方法比较的是对象的引用,也就是内存地址。但是,许多类已经重写了这个方法,使其比较的是对象的实际值。在使用时,需要注意...

相似回答
大家正在搜