標籤:art 命名 指定位置 span off 原來 變數 一個 tostring
String,StringBuilder,StringBuffer
Java中的String,StringBuilder,StringBuffer三者的區別
1. 在運行速度上:StringBuilder > StringBuffer > String
原因:String 為字串常量,而StringBuilder和StringBuffer是字串變數,即String對象建立之後該對象是不可更改的,但後兩者的對象是變數,是可以更改的。例如:
String str = "abc";System.out.println(str);Str = str + "de";System.out.println(str);
在第三行中,str好像是被修改了,其實不然,JVM在第三行又建立了一個新的對象也命名為str,然後把原來對象的str的值和"de"加起來賦給新的str,而原來的str就會被JVM記憶體回收機制給回收掉,所以這裡的str實際上並沒有被更改。
2. 線上程安全上,StringBuilder是線程不安全的,而StringBuffer是安全執行緒的
如果一個StringBuffer對象在字串緩衝區被多個線程使用時,StringBuffer中很多方法可以帶有synchronized關鍵詞,所以可以保證線程的安全,但是StringBuilder的方法則沒有該關鍵詞,所以不能保證安全執行緒。所以如果使用多線程則使用StringBuffer,但在單線程中建議使用StringBuilder速度更快些。
StringBuilder的常用方法:
1. 建立一個StringBuilder對象: StringBuilder str = new StringBuilder();
StringBuilder str = new StringBuilder(string);
2. append:字串的串連 str.append("aaa");
3. toString:str.toString();
4. setCharAt(int I, char c):第i位置替換成c
5. Insert(int I, string str):在指定位置插入字元或字串
6. delete(int start, int end):刪除起始位置(含)到結束位置(不含)之間的字串
7. Replace(int start, int end, string str):從start到end用str代替
StringBuffer的常用方法:
? 添加功能
public StringBuffer append(String str):可以把任意類型資料添加到字串緩衝區裡面,並返回字串緩衝區本身
public StringBuffer insert(int offset,String str):在指定位置把任意類型的資料插入到字串緩衝區裡面,並返回字串緩衝區本身
? 刪除功能
public StringBuffer deleteCharAt(int index):刪除指定位置的字元,並返回本身
public StringBuffer delete(int start,int end):刪除從指定位置開始指定位置結束的內容,並返回本身
? 替換功能
public StringBuffer replace(int start,int end,String str):從start開始到end用str替換
? 反轉功能
public StringBuffer reverse()
? 截取功能
public String substring(int start)
public String substring(int start,int end)
Java 字串演算法常用方法(持續更新)