总结如下:1 == 两者是基本数据类型比较的时候,比较的是值是否相等,如果比较的是两个对象的时候,比较两者引用的对象地址是否一样。
2 equals 两者比较的是基本数据类型包装类对象时,此时比较的是值是否相等,如果不是基本数据类型的时候,此时比较的是两者引用的对象地址是否一样。
比如String类对象做equals比较的时候,比较的就是两个String对象所包含的值:
Object类中equals方法源码如下:
Object里面的equals方法其实就是通过==进行比较,是否引用同一个对象地址
public boolean equals(Object arg0) {
return this == arg0;
}
String类中equals方法源码如下:
String类extends了Object类,并对equals方法进行了重写,此时比较的是对两个对象所包含的字符串内容进行一 一比较
public boolean equals(Object arg0) {
if(this == arg0) {
return true;
} else {
if(arg0 instanceof String) {
String arg1 = (String)arg0;
int arg2 = this.value.length;
if(arg2 == arg1.value.length) {
char[] arg3 = this.value;
char[] arg4 = arg1.value;
for(int arg5 = 0; arg2-- != 0; ++arg5) {
if(arg3[arg5] != arg4[arg5]) {
return false;
}
}
return true;
}
}
return false;
}
}