重写Object的toString()和equals()之精细详解

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]
	 * 
     */
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王家视频教程图书馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值