1. 程式人生 > >深度解析java.lang.String類的equal(Object obj)方法

深度解析java.lang.String類的equal(Object obj)方法

rst string類型 object ring ava [] div compareto ins

背景:最近在研究靜態掃描的東西,遇到一個規則:"equals(Object obj)" should be overridden along with the "compareTo(T obj)" method

然後就想深度扒一扒equals和compareTo有什麽區別

首先先來看下java.lang.String這個類下面的equals方法是如何實現的。

public boolean equals(Object anObject) {
        if (this == anObject) {  //判斷對象的地址是否一致
            return true
; } if (anObject instanceof String) { //判斷anObject是否是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.對象的地址是一致的返回true

2.對象地址不一致但是類型一致,字符數組的長度一致且每個字符都相等,則返回true

3.如果參數不是String類型則返回false

4.如果參數是String類型但是字符數組的長度不一致則返回false

5.如果參數是String類型,字符數組的長度一致,但是從左到右如果遇到字符不一致則返回false

深度解析java.lang.String類的equal(Object obj)方法