StringBuilder & StringBuffer

StringBuilder & StringBuffer

两者时间的差别在于线程安全,前者安全,后者效率高

1.StringBuffer

线程安全的可变字符序列,类似于 String 的字符串缓冲区,但不能修改

虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容

1.1构造方法

说明
StringBuffer()构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符
StringBuffer(CharSequence seq)构造一个字符串缓冲区,它包含与指定CharSequence 相同的字符。
StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

1.2增

说明
StringBuffer append(String str)增加在StringBuffer最后
StringBuffer insert(int offset, String str)插入在任意位置(索引,插入内容)
		StringBuffer sb = new StringBuffer();
		StringBuffer sb2 = sb.append("Hello");
		System.out.println("sb: " + sb); // Hello
		System.out.println("sb2: " + sb2); // Hello
		//是同一个容器,所以不需要创建新的对象

		sb.append(false).append(2.5).append("World").append(new Object());
		System.out.println("sb: " + sb); 
		//直接链式append就可以了

1.3删

说明
StringBuffer deleteCharAt(int index)删除指定的内容
StringBuffer delete(int start, int end)删除区间[start,end)左开右闭原则

1.4改

说明
public StringBuffer replace(int start,int end,String str)(开始位置,结束位置,替换内容)左开右闭原则

1.5其他

说明
public StringBuffer reverse()倒置
public String substring(int start)截取
public String substring(int start,int end)截取区间[start,end)左开右闭原则
1.5.1删除和截取两个的区别
  • 删除是将字符串从容器中删除,截取是提取从容器中提取字符串,并不会改变容器

    		String str = sb.substring(sb.indexOf("7"));
    		System.out.println("sb: " + sb); 
    		System.out.println(str);
    		//截取是不会改变容器的
    

2.StringBuilder

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步

用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候,优先采用,因为快

3.String,StringBuffer,StringBuilder 三者的区别

  • String:不可变字符序列,每次进行改变时,都创建了新的String对象
  • StringBuffer:可变字符序列, 方法大都采用了 synchronized 关键字进行修饰 ,线程安全,效率低
  • StringBuilder:可变字符序列,方法没有锁,所以单线程效率高
  • StringBuffer & StringBuilder方法和功能完全是等价的。

效率:String < StringBuffer < StringBuilder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值