關於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...