“==”和“equals”的区别:
public class User {
String username; //用户名
String password;//密码
}
定义两个用户:
User u1 = new User("admin","123");
User u2 = new User("admin","123");
他们的用户名和密码一样,但他们在内存中的地址是有区别的。
System.out.println(u1==u2);
输出结果为false,是因为“==”比较的是u1和u2的地址;
这时就需要用到equals方法来比较了
System.out.println(u1.equals(u2));
现在结果仍然为false
因为在Object中equals方法默认的是“==”;
所以要在Uesr类中要对equals方法进行重写,这就是Java中的多态。
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else {
if (obj instanceof User) {
User user = (User) obj;
if (this.usermane.equals(user.getUsermane()) && this.password.equals(user.getPassword())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
}
当重写equals方法后再比较u1和u2时 结果就会为true ,最后要重写hashcode方法使得两个相等对象的hash值一致。