equal | == | equals | hashCode

==用于判断前后对象的地址是否相同,常用于比较引用是否指向相同对象。在预编译过程有如下要求:
    1.    相同类型的引用可以比较
    2.    不同类型的引用要进行比较。其中一个的类型必须派生自另一个,否则编译报错。

equal / equals 用于判断前后对象的值是否相同,即地址储存的内容是否相同。

点击(此处)折叠或打开

  1. String string = null;
  2. String string2 = null;
  3. string==string2;

  4. string = new string();
  5. string2 = new string();
  6. 则string!=string2 && string equal string2
在实际情况中的equals不一定满足实际需求,Java中提供了重写的方案,但需要满足原则如下:

点击(此处)折叠或打开

  1. public boolean equals(Object object){//修饰符和参数类型限定为boolean,Object
  2.         if (this == object) {
  3.             return true;//自反性,传递性,对称性需要满足
  4.         }
  5.         if (object == null) {
  6.             return false;//规定,用null检查之恒等于false
  7.         }
  8.         if (!(object instanceof <class-name> )) {
  9.             return false;//强制转换错误
  10.         }
  11.         if (the Condition you want) {//自定义,重写
  12.             return true;
  13.         } else {
  14.             return false;
  15.         }
  16.     }
    重写equals方法后需要重写hashCode方法,保证自定义为相等的两个对象其哈希码相同。
    即若通过了equals方法的测试,那么必须同样通过HashCode的方法测试。

点击(此处)折叠或打开

  1. public int hashCode(){
  2.     //equals方法多于成员变量有关
  3.        //通常的方法是将成员变量与某一素数相乘,使哈希码能够满足要求且随机分布。
  4.    return ....;
  5. }



<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(52) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值