==

==不要和=搞混了,=是一个赋值
而==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的值是地址值。
这个运算符的两边如果都是基本数据类型,判断的是基本数据类型的值是否相等
比如:

1
2
3
int i=1;
int n=1;
System.out.println(i==j);//返回值为true

equals

equals()是一个方法,只能比较引用数据类型。重写前比较的是地址值,重写后比一般是比较对象的属性。
如果没有重写equals方法,就是继承自Object的equals方法,Object类中的equals方法判断的是地址
判断String类型的数据除外,Object类中的equals方法在判断String类型数据时,判断的是内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
}