`
edr_
  • 浏览: 165828 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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,两者的方法基本相同。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics