String類與equals方法

2021-09-11 03:35:40 字數 670 閱讀 4902

常見的string類例項化方式有兩種

public class strings 

}

第一種方式是直接賦值的型別。先在常量池中給「abc」字串分配空間,然後讓str指向常量池中的「abc」。執行string str2 = 「abc」;前先在常量池中檢查有沒有abc字串,要是有就直接讓str2指向該字串。所以str跟str2指向一樣。對於引用資料型別而言==比較的是位址。第二種方式建立的物件位址均不同,所以str3指向的位址不可能跟str一樣。

再來分析equals(object anobject)這個方法。該函式定義於object。在沒有重寫前該方法就是"=="的作用。string類中把這個方法重寫了:

public boolean equals(object anobject) 

if (anobject instanceof string)

return true;}}

return false;

}

這是string類裡的相關原始碼。首先比較指向的位址是否一樣,一樣的話直接判定為true。不一樣就接著判斷。然後用instanceof運算子檢查anobject這個物件是否是string類建立的,也就是檢查傳入的引數是否是字串。當判斷成立就把anobject物件下轉。然後乙個對每個字元的對比了。

關於String類中重寫的equals方法

string anotherstring string anobject 此處為什麼要強制轉換?anobject instanceof string 不是已經判斷了是string型別了麼?轉換成string,是為了之後和string中的逐個字元進行比較。當string.equals string1 ...

String類的equals方法

先上 public boolean equals object anobject if anobject instanceof string return true return false 字串比較方法可以看出從大方向到小方向對比 1.同乙個物件?比引用位址 如果位址都一樣,即乙個物件 直接返回t...

String類equals 原始碼逐行解析

上原始碼 基本型別沒有equals方法,因為equals方法的是object的方法,基本型別沒有繼承這個類。基本型別用 比較的是值。而對於類來說,比較的位址,即是不是在同乙個位址的同一物件。在obect類中,equals方法內部比較用的是 但很多類都重寫了這個方法,使其比較的是內容。來看string...