java中如何重写equals方法

equals()用于比较值,默认的Object类中equals方法与==运算(基本类型比较值,对象类型比较地址)是相同的,除非重写此方法(String类和基本类型的封装类进行了重写)

public class TestEqualsMethod
{
public static void main(String args[]){
//重写equals方法
Student stu_1 = new Student(“ldt”,18);
Student stu_2 = new Student(“ldt”,18);
Student stu_3 = new Student(“mk”,12);
//==测试
System.out.println(stu_1 == stu_2);//false
//equals测试
System.out.println(stu_1.equals(stu_2));//true
System.out.println(stu_2.equals(stu_1));//true
System.out.println(stu_1.equals(stu_3));//false
}
}
//定义Student类并重写equals方法
class Student
{
private int age;
private String name;
public Student(){}
public Student(String name,int age){
this.age = age;
this.name = name;
}
public boolean equals(Object obj){
//自反性
if(this == obj){
return true;
}
//obj不能为null
if(obj == null){
return false;
}
//this和obj的实际类型要相同
if(this.getClass() != obj.getClass()){
return false;
}
//基本类型用==比较,对象类型用equals比较
Student stu = (Student)obj;
if(this.age == stu.age && this.name.equals(stu.name)){
return true;
}else{
return false;
}
}
}

© 2014, 李德涛博客. 版权所有.

发表评论

电子邮件地址不会被公开。 必填项已用*标注