[共享]通用对象是否相等的比较

xiaohaiz 2003-03-30 07:42:45
通常比较两个对象是否相等,可以采用以下的方法:
public static boolean equals(Object obj1, Object obj2) {
// 如果obj1和obj2是指向同一地址的引用则返回true
// 如果obj1和obj2都等于null则返回true(null==null)
if ( obj1 == obj2 ) {
return true;
}
// 如果obj1或者obj2任何一个对象为null,另一个对象不为null
// 则两个对象肯定不相等,返回false
if ( obj1==null || obj2==null ) {
return false;
}
// 使用obj1的equals方法进行比较
return obj1.equals(obj2);
}
使用"==""操作符比较两个对象是否一个引用效率是非常高的,可以推荐优先使用.
如果看过java.lang.String的源码,equals方法的第一行就是if ( this==string )直接比较是否相等的引用地址.

没有太多的分,给那些能够补充新的意见的朋友.
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanyading 2003-07-01
  • 打赏
  • 举报
回复
看这些东西有时候很是一种享受.
xiaohaiz 2003-03-31
  • 打赏
  • 举报
回复
muymuy的意见我明白了,其实这可能并不是多此一举,这样的写法可以避免NullPointException异常的抛出,我们来解释如下:
假设obj1=null, obj2=new Test();
如果不做if (obj1==null||obj2==null)的判断的话,在执行obj1.equals(obj2)语句的时候就会抛出NullPointException.[null.eqauls(X)]明显是应当避免的.
所以增加if(obj1==null||obj2==null)是必要的.这样就可以避免obj1==null时再继续执行.
muymuy 2003-03-30
  • 打赏
  • 举报
回复

这个方法可以实现object的比较,写得很完整了,没有什么需要补充的了。

但是,我觉得有点多此一举,直接调用equals()方法 即可。

obj1.equals(obj2);

不用做“==null”的判断,这个判断应该由外部程序来做。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧