//equals的使用练习
public class Equals {
public static void main(String[] args) {
Compare c1 = new Compare("hah", 23);
Compare c2 = new Compare("ha", 23);
System.out.println(c1);
System.out.println(c2);
System.out.println(c1 == c2);
System.out.println(c1.equals(c2));
}
}
class Compare {
private String name;
private int age;
public Compare(String name, int age) {
this.name = name;
this.age = age;
}
// 重写equals方法,toString()方法
public String toString() {
return "Compare{" + name + "," + age + "}";
}
public boolean equals(Object obj) {
if (this == obj)// 地址相同, 代表是同一个对象, 属性肯定相同, 直接返回true
return true;
if (obj == null)// 传入的对象如果为空, 不用比较直接返回false
return false;
if (!(obj instanceof Compare))// 如果obj不是Compare类型, 直接返回false
return false;
Compare other = (Compare) obj; // 为了访问name和age, 先将Object类型的实参强转回Compare类型
if (this.name == null)// 如果名字一个为null另一个不为null, 返回false
if (other.name != null)
return false;
else if (!this.name.equals(other.name)) // 如果name不同, 返回false
return false;
if (this.age != other.age)// 如果age不同, 返回false
return false;
return true;
}
}
/*
运行上面程序System.out.println(c1.equals(c2));本应该输出false,但结果却输出true。纠结良久,大家帮忙看看~~呵呵。如图:
*/
|
|