Java String類 equals()方法的實現
阿新 • • 發佈:2018-11-11
1、貼原始碼,暫且自行閱讀
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; }
2、釋之
NO1、判斷引用值是否相等,相等即t返回rue,不用往下走;
NO2、判斷型別是否匹配,型別相同,長度相等,逐個比較字元是否一樣,完全符合,則返回ture,一旦不對,返回false;
說明:如果兩個物件等價,前提是它們一定為相同的型別
NO3、型別不匹配,返回false。
3、換種編碼風格,精簡邏輯
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (!(anObject instanceof String)) { return false; } String anotherString = (String) anObject; int n = value.length; if (n != anotherString.value.length) { return false; } char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; }
簡單釋之
1、引用不同,不相等;
2、型別不同,不相等;
3、長度不等,不相等;
4、字元不對等,不相等;
5、排除所有不符合的情況,即相等。