標籤:指定 time tchar 原創 不可 開始 run out mem
1、概要
StringBuffer 其實就是一個儲存字元的容器
字串特點:字串是常量;它們建立之後不能更改了
字串一旦發生變化,那麼立馬建立一個新的對象。
注意:字串的內容不適合頻繁修改的,因為一旦修改馬上就會建立一個新的對象但是需要重複修改字串的內容,建議使用字串緩衝類(stringBuffer)
筆試題目:使用StringBuffer無參構造器建立一個對象時,預設初始容量多少?如果長度不夠使用,自動成長多少倍? StringBuffer底層依賴字元數組才能儲存字元資料,該字串數組的預設初始容量是16,如果字元數組長度不夠用自動成長1倍
2、StringBuffer 與 StringBuillder的區別
2.1、相同點
1.兩個類都是字串緩衝類
2.兩個類的方法都是一樣的
2.2、不同點
1.StringBuffer是安全執行緒的,操作效率低,StringBuillder是非安全執行緒的,操作效率高.
2.StringBuffer出現jdk1.0的,StringBuillder是jdk1.5的時候出現的
推薦使用:StringBuillder,因為操作效率高.
3、StringBuffer和String的區別
1、String對象是不可變的對象,當我們每次操作string都會重寫建立對象來儲存值
2、StringBuffer對象一旦執行個體化,只對這一個對象操作
1 package com.bw.string; 2 3 public class Demo4 { 4 public static void main(String[] args) { 5 String str="abc"; 6 StringBuffer sb=new StringBuffer("abc"); 7 Runtime runtime=Runtime.getRuntime(); 8 long startTime=System.currentTimeMillis(); 9 long startfreeMemory=runtime.freeMemory();10 for(int i=0;i<10000;i++){11 //str+=i; //運行結果:操作耗時:492ms,記憶體消耗:8161KB12 sb.append(i); //運行結果:操作耗時:10ms,記憶體消耗:147KB13 //重新再啟動並執行結果也是:StringBuffer的效率比String的高14 }15 long endfreeMemory=runtime.freeMemory();16 long endTime=System.currentTimeMillis();17 18 System.out.println("操作耗時:"+(endTime-startTime)+"ms,"+"記憶體消耗:"+(startfreeMemory-endfreeMemory)/1024+"KB");19 }20 }4、StringBuffer下的常用方法(函數)4.1、容器具備的行為
4.1.1、增加
append(boolean b) :可以添加任意類型的資料到容器中
insert(int offset, boolean b):指定插入的索引值,插入對應的內容
4.1.2、刪除
delete(int start, int end) :根據指定的開始與結束的索引值刪除對應內容
deleteCharAt(int index):根據指定的索引刪除一個字元
4.1.3、修改
replace(int start, int end, String str) :
reverse()
setCharAt(int index, char ch) :
substring(int start, int end) :
ensureCapacity(int minimumCapacity):
4.1.4、查看
indexOf(String str, int fromIndex) :
lastIndexOf(String str, int fromIndex) :
capacity() :
length() :
charAt(int index) :
toString():
5、例子
|
原創DSHORE
出自:http://www.cnblogs.com/dshore123/
歡迎轉載,轉載務必說明出處。(如果本文對你有用,可以點擊一下右下角的 推薦,謝謝!) |
java基礎20 StringBuffer緩衝類