重写Object的toString()和equals()之精细详解,tostringequals
分享于 点击 24288 次 点评:169
重写Object的toString()和equals()之精细详解,tostringequals
box.java类
/*
* 重写Object的toString()和equals()精细详解
*
*
* 为什么要重写Object的toString()
* 答:继承自父类的toString()方法,你是看不懂他打印出来的类的属性值的。
* 以便于打印类的每个属性值,我们就要重写父类的toString方法了。
*
* 为什么要重写Object的equals()
* 答:便于项目需求,我们要测试两个对象的变量值的内容是否相等,那么就需要重写Object的equals()方法了
*/
public class box {
//声明两个变量测试(name)(age)
String name;
int age;
//声明一个构造方法便于进行传值
public box(String name,int age) {
super();
this.name = name;
this.age = age;
}
//*********************重新父类的toString()*************************
@Override
public String toString() {
return "box [name=" + name + ", age=" + age + "]";
}
//*********************重新父类的equals()*************************
@Override
public boolean equals(Object obj) {
// 如果当前比较的值(this)和传入的值(obj)相等那么直接返回true
if((this == obj)) {
return true;
}
//如果传入的值(obj)是box的引用实例化对象便继续判断if方法否则返回false
if(obj instanceof box) {
//判断了obj是box的实例化对象之后,强制转换obj 为 box 引用对象
box s=(box) obj;
//判断当前对象(this)的name属性与 传入的obj强制转换为box引用的name属性是否相等,如果不相等返回false
if(!this.name.equals(s.name)) {
return false;
}
//判断当前对象(this)的age属性与 传入的obj强制转换为box的引用的name属性是否相等,如果不想等返回false
if(this.age!=s.age) {
return false;
}
//如果if(obj instanceof box)方法中的if语句全部相等那么返回true
//equals(Object obj)的boolean返回值边为true;
return true;
}
//如果if(obj instanceof box)方法的表达式为false,说明传入的值(obj)不是box的引用类型
//equals(Object obj)的boolean返回值边直接返回false;
return false;
}
}
实例box的测试类(test1)
public class test1 {
//main方法开始
public static void main(String[] args) {
//box引用对象b1进行传值
box b1=new box("b1",1);
//box引用对象b2进行传值
box b2=new box("b1",11);
//打赢重写父类了的equals()方法;
System.out.println("b1.equals(b2)的结果为:"+b1.equals(b2));
//打赢重写父类了的toString()方法;
System.out.println(b1.toString());
System.out.println(b2.toString());
}
/*控制台输入结果为:
*
* b1.equals(b2)的结果为:false
* box [name=b1, age=1]
* box [name=b1, age=11]
*
*/
}
相关文章
- 暂无相关文章
用户点评