在这两者中,“==”是比较简单的,所以我们先讨论一下“==”。
1. “==”的作用
“==”的作用就是比较左右两边的值是否相等:
(1)对于Java中的原生数据类型,如int,boolean等,其比较的就是它们字面值是否相等,这个应该是很好理解的;
(2)对于引用类型,如Student student=new Student(),这其中的student就是引用类型,其作用也是比较左右两边的值是否相等,只是时候的值是地址(引用类型的值是地址)。
2. equals()的作用
equals()的作用需要需要分情况来说明:
(1)对于原生数据类型来说,equals()的作用是比较左右两边的值是否相等,跟“==”的作用是一样的。
(2)对于String类型来说,equals()可以判断当前字符串对象和传入的字符串对象是否是同一对象,也可以判断两个字符串对象的内容是否相等。这一点我们可以通过查看String类型中equals()方法的源代码来理解。
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;
}
(3)对于Object类型的对象来说,equals()方法的作用就是判断当前对象啊和传入的对象是否为同一对象。
(4)对于自己定义的类所生成的对象来说,如果自定义的类没有重写equals()方法,那么它将继承父类或者Object类型的equals()方法。如果重写了的话当然就是自己定义的equals()方法所实现的功能。