String-StringBuffer-StringBuilder之间的区别

首先是String与其他两者之间的区别:
String是不可变的,例如:

String a="1111";
String a=a+"2222"+"3333";

其实相当于在栈中定义了三次a,这样一来就使得效率下降。而StringBuffer不是这样,它并非不可变,可以利用.append();来做增加字符串,而不会在栈中重复定义,不过StringBuffer需要定义容量大小,一般是16,如果超出都是以之前定义的倍数增加,这样一来就可能带来内存浪费的可能性,所以具体而言需要看情况而定。
如果是一般不是在for/while循环里面需要重复运用到增删操作的话,建议使用String,相反,对于经常使用的话则考虑效率因素则应该优先考虑使用StringBuffer。
至于StringBuffer与StringBuilder之间差别不大,主要是考虑线程安全问题。
StringBuilder是单线程非安全,Stringbuffer属于线程安全,效率前者快于后者。
StringBuilder一个可变的字符序列是jdk1.5新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步(这也是其效率高的原因)。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
因为在大多数实现中,它比 StringBuffer要快。因此在单线程中优先考虑Stringbuilder,两者的方法基本相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值