equal | == | equals | hashCode

来源:互联网 发布:php 权限管理框架 编辑:程序博客网 时间:2024/05/21 10:53
==用于判断前后对象的地址是否相同,常用于比较引用是否指向相同对象。在预编译过程有如下要求:
    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. }



阅读(52) | 评论(0) | 转发(0) |
0

上一篇:Java 将对象按某属性排列

下一篇:IKanalyzer分词实例并统计词频

相关热门文章
  • JDK1.6官方下载_JDK6官方下载_...
  • MyEclipse6.5下载及注册码...
  • Eclipse+MyEclipse的配置
  • Eclipse 插件安装、升级和卸载...
  • 最新版SWT Designer 6.0 安装,...
  • ChinaUnix & ITPUB社区12周年...
  • ssh连接出现以下提示,求解...
  • 如何扩展MYSQL
  • 准备做一个大型门户,用户什么...
  • gbk or utf8
给主人留下些什么吧!~~