==和equals()的区别
==
- 基本数据类型
基本数据类型中==比较的是两个变量的值。 - 引用数据类型
引用数据类型中比较的是在内存中存放的地址值。
equals() - equals()方法是Object类中的方法。
当使用Object类中的该方法比较时,与“==”作用相同,比较的是对象的内存地址。
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
}
首先我们要明确,==对于基本数据类型我们比较的是变量的值,而equals方法比较的是地址值,所以在很多的的类比较方法中都会对equals进行方法重写,以此来获得想要的结果。
一本在自己写工具类的时候会讲这个方法重写
public class MyTest {
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}