java基礎20 StringBuffer緩沖類
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對象一旦實例化,只對這一個對象操作
1package 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,內存消耗:8161KB 12 sb.append(i); //運行結果:操作耗時:10ms,內存消耗:147KB 13 //重新再運行的結果也是: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緩沖類