package ;
public class User {
private int id;
private String uname;
private int age;
private String sex;
private String city;
public int getId() {
return id;
}
public void setId(int id) {
= id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
= uname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
= age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
= sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
= city;
}
//重写Object类下的toString()方法
public String toString(){
return "User [,uname="+uname+",age="+age+",sex="+sex+",city="+city+"]";
}
//第一步分析
/*@Override
public boolean equals(Object obj) {
*//**
* 这里要改进,根据这里的比较成员变量来决定返回true还是false
* 这里其实要比较的就是name,age和sex,city
* 但是,name是String类型的,而String是引用类型的,所以,在这里不能直接用==比较,
* 应该用equals()比较
* this -- s1
* obj -- s2
*//*
if(obj == null){
return false;
}
//要使用的是用户类的特有成员,所以要向下转型
User s = (User)obj; // s -- obj -- s2
if( == && () && () && ()){
return true;
}else{
return false;
}
}*/
//第二步优化
/* @Override
public boolean equals(Object obj) {
//为了提高效率
if(this == obj){
return true;
}
//为了提供程序的健壮性
//我先判断一下,obj是不是用户的一个对象,如果是,再做向下转型,如果不是,直接返回false
//这个时候,我们要判断的是对象是否是某个类的对象?
if (!(obj instanceof User)) {
return false;
}
//如果是就继续
User user = (User)obj;
("同一个对象,还需要向下转型比较吗?");
return () && == && ()();
}*/
//重写equals要实现hachCode()
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((uname == null) ? 0 : ());
result = prime * result + ((sex == null) ? 0 : ());
result = prime * result + ((city == null) ? 0 : ());
return result;
}
//第三步
@Override
public boolean equals(Object obj) {
if (this == obj) //判断对象地址是否相等,如果是就不用判断,提高效率
return true;
if (obj == null) //对象为空,则不往下走了
return false;
if (getClass() != ()) //判断两个对象是否一样:class --class
return false;
User user = (User) obj; //向下转型
/** 判断成员变量是否一样 */
if (age != )
return false; //判断年龄,int类型,直接比较
//String类型,equals()比较
if (uname == null) {
if ( != null)
return false;
} else if (!())
return false;
if (sex == null) {
if ( != null)
return false;
} else if (!())
return false;
if (city == null) {
if ( != null)
return false;
} else if (!())
return false;
return true;
}
}
相关文章
- 重写equal方法
- 重写equals方法
- python 判断大于等于且小于等于_关于if语句:检查python中值是否大于、小于或等于零的更好方法...
- mac系统如何进入系统偏好设置_技巧:5 种迅速定位 Mac「系统偏好设置」选项的方法...
- 自定义注解完成校验枚举类型的三种方法。
- 让AngularJS兼容IE8及其以下浏览器版本的方法
- Angular支持IE11的方法
- MYSQL百万级以上的数据提高查询速度的方法
- java(继承+封装+多态)编程:定义一个人类(Person),包括属性:姓名、性别、年龄、国籍;包括的方法:吃饭、睡觉,工作
- 编写Java程序,用于显示人的姓名和年龄,定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。利用该成员的getXXX和setXXX方法实现数据赋值与显示输出。