StringBufferStringBuilder

一、区别

String:不可变的字符序列

StringBuffer:可变的字符序列、线程安全、效率低

StringBuilder:可变的字符序列、线程不安全、效率高 JDK5.0新增

二、源码分析

String str = new String();   //相当于 char[] value = new char[0]
String str = new String("abc");   //相当于 char[] value = new char[]{'a','b','c'}

StringBuffer sb = new StringBuffer();   //相当于底层创建了一个长度为16的字符数组 char[] value = new char[16]
sb.append('a');   //相当于 value[0] = 'a';
sb.append('b');   //相当于 value[1] = 'b';

StringBuffer sb = new StringBuffer("abc")   //相当于 char[] value = new char["abc".length + 16];

扩容问题:如果要添加的数据底层数组放不下了,就要扩容底层的数组

​ 默认情况下,扩容为原来数组长度的2倍加2,并且将原来数组的内容复制到新数组

三、常用方法

•添加功能

StringBuffer append(String str)

StringBuffer insert(int offset,String str)

•删除功能

StringBuffer deleteCharAt(int index)

StringBuffer delete(int start,int end)

•替换功能

StringBuffer replace(int start,int end,String str)

•反转功能

StringBuffer reverse()

•截取功能(返回新字符串,本身并没有改变)

String substring(int start)

String substring(int start,int end)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值