您的位置:首页 > 其它

== 和 equal的区别

2015-07-31 10:13 357 查看
==比较的是数据存储的内存地址

基本类型只能用==,不能使用equal进行比较

对于复杂类型,如果是对象类型,==和equal的使用没有区别,比较的是 数据存储的内存地址,即变量是否指向同一个引用对象。

对于String ,Integer,Float等对象而言,因为它们都重写了equal()方法,所以改变了从Object类继承的equal()方法,

重写后的equal()方法比较的是对象的值,

重写后的代码:

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}

public int hashCode() {
int h = hash;
if (h == 0) {
int off = offset;
char val[] = value;
int len = count;

for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: