java 对象识别_3.5.1 Java中的对象识别

packagejava.lang;

publicclassObject {

// ...其他方法省略

publicbooleanequals(Object obj) {

return(this== obj);

}

}

分析上面的代码,可以发现Object类中equals()方法同样判断两个对象的引用是否指向同一个对象。即默认情况下,"=="与equals()方法判断两个对象是否相等使用同一个原则。

由于equals()方法从Object类继承,所以可以在当前的Java类中重写这个方法,以改变判断两个对象是否相等的原则,示例代码如下:publicbooleanequals(Object obj) {

if(this== obj)

returntrue;

if(obj ==null)

returnfalse;

if(getClass() != obj.getClass())

returnfalse;

UserId other = (UserId) obj;

if(birthDate ==null) {

if(other.birthDate !=null)

returnfalse;

}elseif(!birthDate.equals(other.birthDate))

returnfalse;

if(username ==null) {

if(other.username !=null)

returnfalse;

}elseif(!username.equals(other.username))

returnfalse;

returntrue;

}

上面代码来自于SRC 3 2 User.java类,重写了继承自Object类的equals()方法,改变了判断两个对象是否相等的原则。即通过判断两个User对象中的username和birthDate属性值是否相等,进而判断两个User对象是否相等。如果两个User对象的这两个属性值相等,则调用equals()方法,返回值为true,示例代码如下:001User user1 =newUser();

002user1.setUsername("liuwei");

003user1.setBirthDate("1970-11-25");

004

005User user2 =newUser();

006user2.setUsername("liuwei");

007user2.setBirthDate("1970-11-25");

008

009System.out.println(user1.equals(user2));

执行上面的代码后第009行会输出true。

在Java中,String、Date和基本类型的封装类(Integer、Double及Boolean等)也类似于SRC 3 2 User.java类。它们重写了equals(),改变了判断这些类型对象相等的原则,即判断对象是否相等依据的原则为判断二者的内容是否相等,示例代码如下:001String s1 =newString("liuwei");

002String s2 =newString("liuwei");

003System.out.println(s1.equals(s2));

004

005Integer i=newInteger(1000);

006Integer j=newInteger(1000);

007System.out.println(i.equals(j));

执行上面的代码后第003行和第007行会输出true。

【责任编辑:董书 TEL:(010)68476606】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值