StringBuffer就是字符串緩衝區,是用於存儲數據的容器。緩衝區裏面的容器其實還是數組,只不過是把數組封裝了,對外提供方法。緩衝區構造函數StringBuffer()構造一個不帶字符的字符串緩衝區,初始容量爲16個字符。就是說只要一new對象,就產生了一個長度爲16的數組。
StringBuffer特點:
1. 長度是可變的
2. 可以存儲不同類型數據
3. 最終要轉成字符串進行使用
4. 可以對字符串進行修改
可變長度數組的原理:
雖然字符串緩衝區的長度可變,但是數組的長度是不變的。字符串緩衝區的初始長度爲16,如果出現了17個字符,系統就會複製一個數組,長度是原先的兩倍,然後把原來的16個字符按照固定的位置原封不動挪到新數組上,然後再給第17個角標元素賦值。
構造方法
StringBuffer():構造一個初始容量爲16個字符的字符串緩衝區
StringBuffer(String str):構造一個字符串緩衝區,並將其內容初始化爲指定的字符串內容一般方法
- 添加
StringBuffer append(date):可以接收不含byte和short的基本數據類型。將這些數據轉換成字符串,然後將這些字符添加到緩衝區末端
StringBuffer insert(int offset,date):在指定的角標處添加字符 - 刪除
StringBuffer delete(int start,int end):包含開始,不包含結尾
StringBuffer deleteCharAt(int index):刪除指定角標的元素 - 查找
char charAt(int index):查找字符串緩衝區某角標的元素
int indexOf(String str):查找字符串在字符串緩衝區中的角標,如果不存在則返回-1
int indexOf(String str, int fromIndex):從某角標開始查找字符串在字符串緩衝區中的位置
int lastIndexOf(String str):倒敘查找
int lastIndexOf(String str, int fromIndex):從某位置倒敘查找 修改
StringBuffer replace(int start, int end, String str):
void setCharAt(int index, char ch):
void setLength(int newLength):
例:StringBuffer sb = new StringBuffer("abcda"); sb.insert(3, "ab"); System.out.println(sb); System.out.println(sb.charAt(2)); System.out.println(sb.indexOf("ab")); System.out.println(sb.indexOf("ab", 2)); System.out.println(sb.lastIndexOf("ab",2)); sb.replace(1, 3, "nba"); System.out.println(sb); sb.setCharAt(2, 'q'); System.out.println(sb); sb.setLength(10); System.out.println(sb); sb.delete(0,sb.length());//清空緩衝區 System.out.println(sb);
輸出結果:
abcabda
c
0
3
0
anbaabda
anqaabda
anqaabda□□
//清空緩衝區
- 添加
StringBuilder
StringBuffer從JDK1.0版本開始,線程安全,運行速度較慢
StringBuilder從JDK1.5版本開始,線程不安全,運行速度快,優先使用StringBuilder