对于基本类型变量==比较的是两者的值如int类型的比较
对于引用类型==比较的是两者是否为同一个对象,equals比较的是两者的值,且两者的hashcode相同两者equals肯定为true
测试代码
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
测试
Integer a = 4;
Integer b = 4;
System.out.println(a == b);
System.out.println(a.equals(b));
运行结果
true
true
true
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;
}
测试代码
Integer c = new Integer(2);
Integer d = new Integer(2);
System.out.println("c hashcode:" + c.hashCode());
System.out.println("d hashcode:" + d.hashCode());
System.out.println(c == d);
System.out.println(c.equals(d));
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println("s1 hashcode:" + s1.hashCode());
System.out.println("s2 hashcode:" + s2.hashCode());
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
运行结果
c hashcode:2
d hashcode:2
false
true
s1 hashcode:96354
s2 hashcode:96354
d hashcode:2
false
true
s1 hashcode:96354
s2 hashcode:96354