關於String原始碼分析

2022-09-11 01:45:15 字數 1678 閱讀 3688

關於string的類定義:

public final class string implements j**a.io.serializable, comparable, charsequence

以final修飾,不可繼承,不可變,其方法預設都是final的

實現 serializable、comparable、charsequence 三個介面。

private final char value;string內部是乙個字元陣列。

常用方法:

1、int length():返回字串長度

2、boolean isempty():返回字串是否為空,判斷條件是字串長度

3、char charat(int index):返回字串index位置的值

4、boolean equals(object object):重寫object類中的方法,判斷過程為,先判斷是否是同一物件,是就返回true;然後判斷object是否為字串型別,是就把object強轉為string型別,然後判斷長度是否相同,相同的話再轉換為字元陣列,乙個乙個比較

5、int indexof(string str,int fromindex):返回str在字串中從指定的索引開始首次出現的位置

6、int lastindexof(string str,int fromindex):返回str在字串中從指定的索引開始最後出現的位置

7、string substring(int beginindex):返回乙個子字串,是字串從指定索引開始到字串結束的子字串

8、string concat(string str):返回乙個新字串,str拼接到字串後面

9、string replace(char oldchar,char newchar):返回乙個新字串,字串中舊字元被替換為新字元,並返回新字串

10、string replaceall(string regex,string replacement):返回乙個新字串,可與replace()相同,也可按照regex規則替換,並返回新字串

11、string split(string regex):返回乙個字串陣列,按照regex規則進行拆分

12、string join(charsequence delimiter,charsequence.. elements):j**a8新增功能,按照規則進行拼接字串或陣列

13、string tolowercase()/touppercase():返回新字串,把字串中的字母轉換為小/大寫後返回新字串

14、string trim():去掉收尾的空格去掉返回新字串

15、char tochararray():把字串轉換為字元陣列

16、string valueof(object obj):(obj==null)? "null":obj.tostring()

17、string intern():當呼叫 intern 方法時,如果池已經包含乙個等於此 string 物件的字串(該物件由 equals(object) 方法確定),則返回池中的字串。否則,將此 string 物件新增到池中,並且返回此 string 物件的引用。

寫在後面:

關於string物件的建立和常量池使用jdk為1.8,常量池存在於堆中,執行intern()方法時,如果存在堆中的物件,會直接儲存物件的引用,而不會重新建立物件,另外stringpool的長度為1009且不可變的

String原始碼分析

前言 string類在日常開發過程中使用頻率非常高,平時大家可能看過string的原始碼,但是真的認真了解過它麼,筆者在一次筆試過程中要求寫出string的equals方法,瞬間有點懵逼,憑著大致的理解,算是寫出來了,可是下來一翻string的原始碼頓悟,原來自己寫得是多麼的low,所以有必要把這些...

原始碼分析之String

先看屬性 底層是char陣列,一目了然 可以看到,value是儲存string的內容的,即當使用string str abc 的時候,本質上,abc 是儲存在乙個char型別的陣列中的。string底層的儲存結構是乙個字元型別的陣列,同樣也是被final修飾,因此一旦這個字元陣列被建立後,value...

STL原始碼分析 string

從定義可知,string其實是base string的特化類,string使用預設的記憶體分配器 stl default allocator chart template class alloc stl default allocator chart class basic string typed...