「java重写equals方法」java为什么要重写equals

博主:adminadmin 2022-12-19 15:54:09 52

本篇文章给大家谈谈java重写equals方法,以及java为什么要重写equals对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何重写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重写equals方法」java为什么要重写equals

java定义类里重写equals方法的问题

this代表的是Person类,当前类的对象;父类引用指向子类对象是不能访问子类里的独有成员这个没有错。

o是形参,转之前先进行了判断,符合条件后才强转转成Person类,然后进行比较

下面的是标准写法,供你参考

通常自己的类里面这样重写equals方法,如果重写equals,则必须重写hashcode方法

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Share other = (Share) obj; // 换成你自己的类

if (cn_share_id == null) {

if (other.cn_share_id != null) // 要比较的成员

return false;

} else if (!cn_share_id.equals(other.cn_share_id))

return false;

return true;

}

java为什么要重写equals ?!

重写并不是说object类里面的equals方法有缺陷,而是为了不同场景的需要。不同对象相同的方法不一样。

比如说对象是人,它有2个属性,name和height。有AB两个人,我们怎么来判断这两个人是同一个人还是不同的人,这里就要用到比较 , A.equals(B);

这里的equals就需要重新object类里的方法,来告诉程序,怎么判断2个人是同一个人

1。名字相同他们就是同一个人

2。name 和height 相同才是一个人

所以需要重新,例子简单不晓得你看明白没。

Java 创建简单Java 类 有参无参 重写equals方法

package com.sxl.test;

public class Person {

//属性:姓名、性别、年龄

private String name;

private String sex;

private int age;

//无参构造

public Person() {

super();

}

//带参构造

public Person(String name, String sex, int age) {

super();

this.name = name;

this.sex = sex;

this.age = age;

}

//重写equals方法

@Override

public boolean equals(Object arg0) {

if(arg0 == Person.class) {

return true;

}

return false;

}

}

java重写equals方法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java为什么要重写equals、java重写equals方法的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-19,除非注明,否则均为首码项目网原创文章,转载请注明出处。