重写equals的方法

 

1. 使用 == 操作符检查 “ 实参是否为指向对象的一个引用 ” 。如果是的话,则返回 true
2. 使用 instanceof 操作符检查 “ 实参是否为正确的类型 ” 。如果不是的话,则返回 false
3. 把实参转换到正确的类型。因为前面已经有了 instanceof 测试,所以这个转换可以确保成功。
4. 对于该类中每一个关键域,检查实参中的域与当前对象中对应的域值是否匹配。如果所有的测试都 成功,则返回 true ;否则返回 false
我的相关实验:
package test2;

public class Test2 {

	private String msg;

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public boolean equals(Object obj) {
		if (obj == this) {
			return true;
		}
		if (obj instanceof Test2) {
			Test2 tobj = (Test2) obj;
			return this.msg != null ? this.msg.equals(tobj.msg) : tobj.msg == null;
		}
		return false;
	}

	public int hashcode() {
		return this.msg != null ? this.msg.hashCode() : "".hashCode();
	}
	
	public static void main(String[] args) {
		Test2 t1 = new Test2();
		System.out.println(t1.equals(t1));
		t1.setMsg("good");
		Test2 t2 = t1;
		System.out.println(t1.equals(t2));
		t1.setMsg(null);
		Test2 t3 = new Test2();
		System.out.println(t1.equals(t3));
	}

}
 
输出如下:
true
true
true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值