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) ;