StringBuffer
StringBuilder
1. 概述
由于String类的对象字符串是不可变的,如果要重组字串或者是替换字符等变更操作,可能会浪费大量内存,所以就产生了StringBuffer类
StringBuffer又称为可变字符串序列,是一个类似于String的字符串缓冲区,通过StringBuffer的方法调用可以改变字符串序列的长度和内容,提高操作效率
String类中使用了一个fianl的value[]数组,而StringBuffer类中是一个没有fianl的可变数组value[]
2. 原生StringBuffer对可变字符数组默认大小的指定
默认可变value[]数组大小是16,见源码:
StringBuffer类的箜参构造函数调用了父类AbstractStringBuilder的有参构造函数 super()就是AbstractStringBuilder(16)3 StringBuffer的常用方法
3.1 StringBuffer append(String str)
将指定的字符串附加到此字符序列。
查阅api手册,append方法不仅能追加str还可以追加任意类型的数据
3.2 StringBuffer delete(int start, int end)
删除此序列的子字符串中的字符。
3.3 StringBuffer insert(int offset,String str)
可将任意类型数据插入到此字符序列中。
3.4 StringBuffer replace(int start, int end,String str)
用指定的String中的字符替换此序列的子字符串中的String。
3.5 StringBuffer reverse()
导致该字符序列被序列的相反代替。
3.6 public String toString()
返回表示此顺序中(可变字符数组)的数据的字符串。
将StringBuffer转换为String的对象,形式变了,String对象不可变了
4. StringBuilder类与StringBuffer类对比
StringBuilder类提供与StringBuffer的API,但不保证同步。
也就是说,StringBuilder与StringBuffer类中的方法完全相同。但是StringBuilder类是应用于单线程,多线程不安全,数据不同步;而StringBuffer类是多线程同步数据的类,多线程中使用是安全的。
由于StringBuilder是不同步的,因此单线程中StringBuilder效率更高,优先使用。
5. 练习
int[] arr = {34, 12, 89, 68}; 将一个int[]数组转换成字符串==>格式[34, 12, 89, 68]
网友评论