StringBuffer(重點 )
1. 基本介紹
(1)StringBuffer
是可變的字符序列 ,可以對字符串內容驚醒增刪 (3)StringBuffer
是一個容器
2. 結構關系圖
(1) StringBuffer 的直接父類 是 AbstractStringBuilder
(2) StringBuffer 實現了 Serializable
,即 StringBuffer 的對象可以串行化 (即可以在網絡中傳輸 )
(3) 在父類中 AbstractStringBuilder 有屬性 char[] value
, 不是 final
(4)數組的起始大小是 16 ,如果大于 16 個字符長度,會自動擴容
(5) 該 value 數組存放字符串內容,引出存放在堆中的
(6) 因為 StringBuffer 字符內容是存在 char[] value, 所以在變化(增加/刪除)時不用每次都更換地址 (即不是每次創建新對象),所以效率高于 String
一、String
和StringBuffer
的相互轉換
(1)String
—>StringBuffer
方法一:創建StringBuffer
對象,調用構造器
String str = "jackson" ;
StringBuffer stringBuffer = new StringBuffer ( str) ;
StringBuffer stringBuffer1 = new StringBuffer ( ) ;
stringBuffer1 = stringBuffer1. append ( str) ;
(2)StringBuffer
—>String
StringBuffer stringBuffer = new StringBuffer ( "jackson" ) ;
String str1 = stringBuffer. toString ( ) ;
String str2 = new String ( stringBuffer) ;
二、StringBuffer
類的常用方法
方法介紹
增:append(“字符串”) 刪 改:repalce(索引 1 ,索引 2 ,字符串) 翻轉:reverse()
示例代碼
StringBuffer stringBuffer = new StringBuffer ( "hello~" ) ; System . out. println ( "stringBuffer --> " + stringBuffer) ;
stringBuffer. append ( "world" ) ;
System . out. println ( "append(\"world\") --> " + stringBuffer) ;
stringBuffer. delete ( 6 , 11 ) ;
System . out. println ( "delete(6,11) --> " + stringBuffer) ;
stringBuffer. deleteCharAt ( 5 ) ;
System . out. println ( "deleteCharAt(5) --> " + stringBuffer) ;
stringBuffer. insert ( 5 , "~world" ) ;
System . out. println ( "insert(5,\"~world\") --> " + stringBuffer) ;
System . out. println ( "stringBuffer.substring(5,11) --> " + stringBuffer. substring ( 5 , 11 ) ) ;
stringBuffer. replace ( 5 , 11 , "" ) ;
System . out. println ( "replace(5,11,\"\") --> " + stringBuffer) ;
System . out. println ( "indexOf(\"l\") --> " + stringBuffer. indexOf ( "l" ) ) ;
System . out. println ( "lastIndexOf(\"l\") --> " + stringBuffer. lastIndexOf ( "l" ) ) ;
System . out. println ( "reverse() --> " + stringBuffer. reverse ( ) ) ;
輸出結果
stringBuffer -- > hello~
append ( "world" ) -- > hello~ world
delete ( 6 , 11 ) -- > hello~
deleteCharAt ( 5 ) -- > hello
insert ( 5 , "~world" ) -- > hello~ world
stringBuffer. substring ( 5 , 11 ) -- > ~ world
replace ( 5 , 11 , "" ) -- > hello
indexOf ( "l" ) -- > 2
lastIndexOf ( "l" ) -- > 3
reverse ( ) -- > olleh
三、小練習
題目:價格中小數點前的數字,每三位用逗號隔開
String price = "8123564.59" ;
StringBuffer sb = new StringBuffer ( price) ;
for ( int j = sb. lastIndexOf ( "." ) - 3 ; j > 0 ; j -= 3 ) { sb = sb. insert ( j, "," ) ;
} System . out. println ( sb) ;