搜索

java中的equals方法

java中Object类的equals方法其实也是比较的地址,但是一旦重写之后,equals就比较的值。所以重写之后的方法,为什么就是比较值了呢?下面是重写后的方法,可以讲解一下代码意思吗
头像
1265 次浏览2020.05.25 提问
10

最新回答(1条回答)

头像
2020.05.26 回答

很多时候需要根据这个类的作用进行重写equals方法,比如在一个学生信息类的时候,通常的变量是这几个,ID、name、专业,成绩,怎么确定是同一个人呢,这就需要使用到equals方法,使用字符串的对比方法。当然这个对比已经在String类中实现了,只要自己使用就可以了。

现在就重写equals方法,利用Uesr类创造两个对象,一个是灰灰,一个是大灰灰,但是其ID是一样的,具体代码如下

public class TestEquals {

public static void main(String[]args) {

Object obj;

String str;

Uesr u= new Uesr(1000,"灰灰","201704500238");

Uesr u1=new Uesr(1000,"大灰灰","201704500238");

System.out.println(u==u1); //false

System.out.println(u.equals(u1));// true

}

}

class Uesr{

int id;

String name;

String pwd;

public Uesr(int id,String name,String pwd) {

this.id=id;

this.name=name;

this.pwd=pwd;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

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

return false;

Uesr other = (Uesr) obj;

if (id != other.id)

return false;

return true;

}

}

结果已经显而易见了

System.out.println(u==u1); //false

System.out.println(u.equals(u1));// true

使用==符号直接对比,这个就是对比是不是一个对象,u和u1肯定不是一个对象,

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

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

return false;

Uesr other = (Uesr) obj;

if (id != other.id)

return false;

return true;

}

重写equals方法之后,这就是对比u和U1中的ID是不是相同了,显而易见肯定是true,灰灰,大灰灰都是201704500238。但是如果对比的是name就不同了。

抢首赞
置顶