1.关系操作符==
用于基本类型时,比较二者的值是否相同;
用于对象引用时,比较引用指向的对象是否相同;
2.equals方法
equals是Object的方法,一般用于比较对象是否相同.
其中在Object中的实现如下:
public boolean equals(Object obj) { return (this == obj); }
可见,如果比较的对象默认使用Object中的equals方法,则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; }
1)首先比较二者是否指向同一引用,是则二者相同;
2)若不指向同一引用,进一步判断内容是否相同,若相同,则二者相等;
String的equals()方法对Object类进行了扩展.实际上Java中所有的内置类的equals()方法均作了此扩展;