目录
3.String类StringBuffer类StringBuilder区别
1.StringBuffer类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 线程安全的可变字符序列
StringBuffer和String的区别:StringBuffer线程安全,值可变,只能用构造方法创建;改变StringBuffer的值,不会改变其地址。指的是char[]的值在变,数组没变
源代码:
* public StringBuffer(String str) {
* super(str.length() + 16);
* append(str);
* }
*
2.StringBuffer方法
public StringBuffer()
public StringBuffer(String str)
public StringBuffer append(String str) 在字符串末尾添加str字符串
public StringBuffer insert(int offset,String str)
删除功能
public StringBuffer deleteCharAt(int index) 删除指定索引处的字符
public StringBuffer delete(int start,int end) 删除指定区间的字符串 包含开始,不包含结尾
替换功能
public StringBuffer replace(int start,int end,String str) 不包含结尾
public StringBuffer reverse() 将字符串完全反转
public String substring(int start)
public String substring(int start,int end)
注:截取功能和前面几个功能的不同,返回值类型是String类型,本身没有发生改变
public static void main(String[] args) {
/*
StringBuffer线程安全的,值可变的字符串(指的是底层char[]的值在变)
public StringBuffer() {
super(16);
}
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
StringBuilder线程不安全的,值可变的字符串
*/
//StringBuffer s1 = new StringBuffer(30);
//StringBuffer s = new StringBuffer();//创建了一个字符串对象,底层是是一个char数组
StringBuffer s2 = new StringBuffer("abcd");
s2.append("11111");
s2.append("22222");
s2.append("33333");
s2.append("44444");
//s2.insert(1, "xxxx");
//s2.deleteCharAt(2);
//s2.delete(0,5);//删除指定区间的字符串 包含开始,不包含结尾
// System.out.println(s2.reverse());
//System.out.println(s2.replace(0, 5, "ccccc"));
String ss = new String(s2);//new String(StringBuffer s)
StringBuilder s1 = new StringBuilder();
/*
String: 值不能变 底层 final char [] value; 一旦需要改变值,必须重新创建一个String value=value+111;
StringBuffer 值可变 char [] value 继承 AbstractStringBuilder
StringBuilder 值可变 char [] value 继承 AbstractStringBuilder
StringBuffer 添加synchronized 同步锁 多线程安全
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);调用父类
return this;
}
StringBuilder 没有添加同步锁 多线程不安全
public StringBuilder append(String str) {
super.append(str); 调用父类
return this;
}
*/
}
3.String类StringBuffer类StringBuilder区别
-
StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程安全的
-
String:是字符常量,适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
最后,觉得有用的话,可以点赞、收藏,加关注哟,要不下次就找不见了哟!