通过JDK8源码深入学习String,StringBuffer,StringBuilder

String,StringBuffer,StringBuilder的异同:

1.String为定长的,StringBuffer,StringBuilder为可变长,缓冲区满了会成倍扩容。

2.StringBuffer为线程安全的,StringBuilder为非线性安全。

由stringbuffer的源码可见方法都加上了synchronized锁,势必对性能有所影响。

3.StringBuffer和StringBuilder均继承了AbstractStringBuilder类,StringBuffer和StringBuilder初始化字符串缓存区方法相同。

     只举stringbuffer的例子,stringbuilder类似,可见源码。

     StringBuffer str1 = new StringBuffer();

     此时初始化构造一个没有字符串的缓存区,初始容量默认为16字符。

     StringBuffer str2 = new StringBuffer(str);

     此时初始化构造一个内容为str的字符串缓冲区。字符串缓冲区的初始容量是(16+str.length)字符。



4.StringBuffer和StringBuilder的toString()方法均需要占用新的内存,内存大小为字符串的大小。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值