首先,String StringBuilder StringBuffer有什么区别呢?
他们三个的主要区别在于可变不可变和线程是否安全,其中:
String类使用字符数组存储字符串,因为有final修饰符所以String类型是不可变得,对于String的修改都是重新创建一个对象然后把新的值保存进去。
而另外两个都是继承的AbstractStringBuilder类,这两种对象是可变的,底层也是使用字符数组存储。
String对象不可变,所以线程安全;
StringBuilder是线程不安全的,但相对效率较高;
StringBuffer是线程安全的,因为添加了同步锁Synchronized。
StringBuffer的构造方法有:
public StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity) 指定容量的字符串缓冲区对象
public StringBuffer(String str) 指定字符串内容的字符串缓冲区对象。
常用函数有:
连接:s.append(“abc”) 在s后面连接abc
s.append("a".repeat(n)) 在s后面连接a重复n次
插入:s.insert(3,“abc”)在s的三位置插上abc
删除:s.deletCharAt(3)删除s的三号位置上的值
s.delet(1,9)删除s1到8位置上的值(包括8)
替换:replace(1,9,“1234567890”)把1到8的(包括8)的值删除替换成后面字符串的值
反转:reverse
截取部分:s.substring(1,12)截取部分1到12 不包括12
s.substring(12)截取部分12到末尾 包括12
s.capacity()返回容量 理论值
s.length()返回当前大小 实际值