==用于判断前后对象的地址是否相同,常用于比较引用是否指向相同对象。在预编译过程有如下要求:
1. 相同类型的引用可以比较
2. 不同类型的引用要进行比较。其中一个的类型必须派生自另一个,否则编译报错。
equal / equals 用于判断前后对象的值是否相同,即地址储存的内容是否相同。
如
在实际情况中的equals不一定满足实际需求,Java中提供了重写的方案,但需要满足原则如下:
重写equals方法后需要重写hashCode方法,保证自定义为相等的两个对象其哈希码相同。
即若通过了equals方法的测试,那么必须同样通过HashCode的方法测试。
阅读(52) | 评论(0) | 转发(0) |
<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>
1. 相同类型的引用可以比较
2. 不同类型的引用要进行比较。其中一个的类型必须派生自另一个,否则编译报错。
equal / equals 用于判断前后对象的值是否相同,即地址储存的内容是否相同。
如
点击(此处)折叠或打开
- String string = null;
- String string2 = null;
- 则 string==string2;
-
- string = new string();
- string2 = new string();
- 则string!=string2 && string equal string2
点击(此处)折叠或打开
- public boolean equals(Object object){//修饰符和参数类型限定为boolean,Object
- if (this == object) {
- return true;//自反性,传递性,对称性需要满足
- }
- if (object == null) {
- return false;//规定,用null检查之恒等于false
- }
- if (!(object instanceof <class-name> )) {
- return false;//强制转换错误
- }
- if (the Condition you want) {//自定义,重写
- return true;
- } else {
- return false;
- }
- }
即若通过了equals方法的测试,那么必须同样通过HashCode的方法测试。
点击(此处)折叠或打开
- public int hashCode(){
- //equals方法多于成员变量有关
- //通常的方法是将成员变量与某一素数相乘,使哈希码能够满足要求且随机分布。
- return ....;
- }
相关热门文章
给主人留下些什么吧!~~
评论热议