Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82387
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 839
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-12 14:38
个人简介

我在收集一些石头,我期待它们有一天能够串联成一串项链。

文章分类

全部博文(31)

文章存档

2013年(31)

我的朋友

分类: Java

2013-03-12 16:33:07

==用于判断前后对象的地址是否相同,常用于比较引用是否指向相同对象。在预编译过程有如下要求:
    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. }



阅读(628) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~