==可以比较基本数据类型、引用数据类型…
equals只能比较对象(字符串也是对象,String类继承Object类)。
1.==:
基本数据类型:
int value1 = 10;
int value2 = 10;
System.out.println(value1 == value2);//true
- 使用==比较基本数据类型的值是否相等;
引用数据类型:
Student s1 = new Student("小黑", 17);
Student s2 = new Student("小黑", 17);
System.out.println(s1 == s2);//
- 使用 == 比较两个对象是否一致。比较的是对象的地址是否一致。
2.equeals:
Object的equeals方法:
public boolean equals(Object obj) {
return (this == obj);
}
- 比较的是对象的引用地址
String重写的equeals方法:
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;
}
- 先比较对象地址是否一致,不一致则确认是否是String及其子类,如果是,则比较字符串的长度,长度相等则比较内容
在实际应用中我们可以根据需求重写equeals方法