StringBuffer练习
String Buffer出现的背景:因为String是常量,并且内容和长度不可改变,要想进行改变需要建立一个新的字符串
例如:
public class StringBufferTest {
public static void main(String[] args) {
String s="QWE";
String s1=s+"R";//要想在字符串s里进行修改需要在新建一个字符串,才能修改比较麻烦
System.out.println(s1);
}
}
于是有了String Buffer,而且StringBuffer可以改变和修改。主要用于文件的读取和处理
下面是关于String Buffer的一些常用方法
1.增
//StringBuffer:缓冲区,暂存,可以改变
StringBuffer st=new StringBuffer();//首先新建一个String Buffer
st.append("a");//往st里添加数值
st.append("b");
st.append("c");
st.append("d");
System.out.println(st);
2.删
st.delete(0,2);
System.out.println(st);
删除零到二也就是abc,是删出下标为2的字符以前的是一个[ )的区间
3.替换
st.replace(1,3,"0");//替换:但可以多个替换成同一个
int length = st.length();//因为替换字符串的长度也发生了变化要注意
System.out.println(length);
System.out.println(st);
这里把abcd替换成了a0d,替换了下标为3字符之前的数值,同时字符串的长度也变化了。这里也要注意如果原字符串只有一个位置,只能替换那一个位置。不然会报错如下
异常:StringIndexout Bounds Exception
越过,越界
4.插入
StringBuffer st1=new StringBuffer();
st1.append("1234");
st1.insert(2,"我是新插入的字符串");
System.out.println(st1);
5.反转
StringBuffer st1=new StringBuffer();
st1.append("1234");
st1.reverse();
System.out.println(st1);
关于StringBuilder 和StringBuffer的区别
StringBuilder速度更快,但线程不安全,并且是单线程操作
StringBuffer:线程安全,字符串大小变化时会自动增加容量,而且是多线程操作