StringBuffer和StringBuilder
为什么要引入这两个类?
由于字符串常量不可变更,为了方便进行字符串内容的修改,引入两个SB类。 在字符串中使用 + 进行字符串的拼接,这种拼接操作会产生大量的垃圾空间。
引入两个SB类后,字符串拼接操作改为调用append()方法
- String 与 SB 的相互转换:
- String-> StringBuffer
-调用StringBufer的构造方法
-调用append(); - StringBuffer -> String
-调用toString()
- 三个的区别:
- 字符串常量不可变更,SringBuffer与StringBuilder内容可以修改(append)
- String变量在使用 + 进行字符串拼接时,javac编译器会将String变量变为StringBuilder而后进行append处理(编译器优化)
3.两个SB的区别
-StringBuffer采用同步处理,线程安全,性能较低
-StringBuilder采用异步处理,线程不安全,性能较高
两个SB类的方法:
- reverse(): 字符串反转
- delete(start,end)删除
3.insert(位置,数据); 插入
StringBuffer str = new StringBuffer("hello");
System.out.println(str);
str.append("world");
System.out.println(str);
str.append(" really?");
System.out.println(str);
System.out.println(str.reverse());
System.out.println(str.delete(2, 5));
System.out.println(str.insert(2, "myname"));
>>>>>>>>>>>>>>>>>>>>.
hello
helloworld
helloworld really?
?yllaer dlrowolleh
?yer dlrowolleh
?ymynameer dlrowolleh