String、StringBuffer和StringBuilder

String表明不可變的字符序列是一個終態類不能被繼承。字符串是常量聲明以後不能改變其值。api

      在對String類型的對象進行操做時好比使用+對字符串拼接是會產生新的對象。這就會對字符串的操做效率大大下降。當須要頻繁修改字符串時,不建議用String類。數組

      對字符串比較時,不建議使用「==」,而是用equals()方法。在String類中,已經對equals()從新。安全

StringBuffer:是可變的字符序列,是線程安全的,同步的。它在對字符串進行操做時,使用的是append()方法,在字符串的後面追加字符串,可是不產生新的對象。這樣對字符串操做的效率較高。在Java中若是對字符串進行大量的操做,建議使用 StringBuffer多線程

StringBuilder:是可變的字符序列,不是線程安全的,不一樣步。它與StringBuffer相似,可是不是線程安全的,效率很高,用在字符串緩衝區被單個線程使用的時候,建議優先採用該類。將 StringBuilder 的實例用於多線程是不安全的。若是須要這樣的同步,則建議使用 StringBufferapp

String s1 = newString(」hello」);ide

String s2 = newString(」hello」);ui

String s3 = 「hel」;spa

String s4 = 「lo」;.net

String s5 = s3+s4;線程

String s6 = 「hel」;

System.out.println(s1 == s2);//false,指向的不是同一個對象。

System.out.println(s3 == s6);//true

System.out.println(s1 == s5);//false s5產生的是一個新的對象。

Java中使用(==)來比較,對於基本數據類型比較的是其變量的值,對於引用數據類型比較的是變量的引用地址。

String 類中經常使用的方法

intcompareTo(String value): 指定者:接口 Comparable 按字典順序比較兩個字符串。若是兩個字符串相等,則返回 0;若是字符串在參數值以前,則返回值小於 0;若是字符串在參數值以後,則返回值大於 0

public int length(),字符串的長度

public char charAt(int index),返回一個在字符串中索引是indexchar類型的字符。此方法能夠將一個字符串轉換成char類型的數組。同時,也可使用new String(char[] ch)char類型的數組,在String聲明時轉換成一個字符串。

boolean startsWith(Stringvalue)   檢查一個字符串是否以參數字符串開始。

booleanendsWith(String value)檢查一個字符串是否以參數個字符串結束。

public int indexOf(int ch)返回指定字符ch在此字符串中第一次出現處的索引值;若是未出現該字符,則返回 -1

public int indexOf(int ch, int fromIndex) fromIndex - 開始搜索的索引

public int lastIndexOf(intch)   返回最後一次出現的指定字符在此字符串中的索引值;若是未出現該字符,則返回 -1

public int lastIndexOf(Stringstr)   返回最後一次出現的指定子字符串str在此字符串中的索引值;若是未出現該字符串,則返回 -1

public String substring(intindex)提取從位置索引index開始直到此字符串末尾的這部分子字符串

public String substring(intbeginIndex, int endIndex)提取從 beginindex開始直到 endindex(不包括此位置)之間的這部分字符串

public String concat(Stringstr)  將指定字符str串聯接到此字符串的結尾成爲一個新字符串返回。

public String replace(charoldChar, char newChar)      返回一個新的字符串,它是經過用 newChar 替換此字符串中出現的全部 oldChar 而生成的。

public String trim() 返回字符串的副本,忽略前導空白和尾部空白

public String toUpperCase();   將此字符串中的全部字符都轉換爲大寫

public String toLowerCase();   將此字符串中的全部字符都轉換爲小寫

public int length()得到此字符串的長度

StringBuffer:經常使用的方法

StringBuffer append(Stringstr):將指定的字符串追加到此字符序列

StringBuffer insert(intoffset, String str)   將字符串str插入此字符序列指定位置中。

int length( ):肯定 StringBuffer 對象的長度

void setCharAt(int pos, charch)    使用 ch 指定的新值設置 pos指定的位置上的字符

String toString( )轉換爲字符串形式

StringBuffer reverse()    反轉字符串

StringBuffer delete(intstart, int end)   此方法將刪除調用對象中從start 位置開始直到 end 指定的索引 1 位置的字符序列

StringBuffer deleteCharAt(intpos)     此方法將刪除 pos 指定的索引處的字符

StringBuffer replace(intstart, int end, String s):此方法使用一組字符替換另外一組字符。將用替換字符串從 start 指定的位置開始替換,直到end 指定的位置結束

StringBuilder的用法和StringBuffer的用法是一致的。瞭解更詳細的請看官方文檔,或者在線查看http://tool.oschina.net/apidocs/apidoc?api=jdk-zh Java API 文檔

2017-11-30 new String的內存分配過程。

相關文章
相關標籤/搜索