StringBuffer和StringBuilder
来源:互联网 发布:搜索引擎客户数据分析 编辑:程序博客网 时间:2024/06/10 01:27
分析以下代码,共产生了多少个String对象
/** * Created by wjz on 2017/3/12. */public class StringTest { public static void main(String[] args) { String a = "a"; String b = "b"; String c = "c"; String d = "d"; String abcd = a + b + c + d; }}一共产生了7个对象,"a","b","c","d","ab","abc","abcd"字符串,由以上的实例看出,通过String直接相加拼接字符串的效率很低,应该使用StringBuffer和StringBuilder类,他们是对String的一种补充,例如:
/** * Created by wjz on 2017/3/12. */public class StringTest { public static void main(String[] args) { String a = "a"; String b = "b"; String c = "c"; String d = "d"; StringBuffer sb = new StringBuffer(); sb.append(a); sb.append(b); sb.append(c); sb.append(d); String abcd = sb.toString(); //toString方法得到sb的值 System.out.println(abcd); }}
那么StringBuffer和StringBuilder的区别是什么呢?我们看源码:
StringBuffer中的toString方法如下:
@Override public synchronized String toString() { if (toStringCache == null) { toStringCache = Arrays.copyOfRange(value, 0, count); } return new String(toStringCache, true); }
使用了synchronized关键字,它是线程安全的;
StringBuilder中的toString方法如下:
@Override public String toString() { // Create a copy, don't share the array return new String(value, 0, count); }
它不是线程安全的,所以当涉及到线程安全的问题时,应该使用StringBuffer。
0 0
- String 、StringBuffer 和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- StringBuffer 和 StringBuilder比较
- StringBuffer 和 StringBuilder
- String、StringBuffer和StringBuilder
- 浅析StringBuilder和StringBuffer
- String Stringbuffer和StringBuilder
- StringBuffer和StringBuilder区别
- stringBuffer 和stringBuilder
- String ,StringBuffer和StringBuilder
- StringBuilder和StringBuffer
- StringBuffer和StringBuilder区别
- String、StringBuffer和StringBuilder
- StringBuffer和StringBuilder
- StringBuffer和StringBuilder
- StringBuffer和StringBuilder
- L2-002. 链表去重
- Swift: ImplicitlyUnwrappedOptional,Optional
- Pandas入门(上)
- Retrofit2学习记录
- 如何阅读文献(三)
- StringBuffer和StringBuilder
- 随记1——FramLayout先放置Button,再放置TextView,Button会覆盖TextView
- leetcode【第三周】:输出圆括号
- GitHub使用教程
- 超越spark性能300倍的性能测试
- Maximum Subarray
- 深入理解pthread_cond_wait、pthread_cond_signal
- leetcode No234. Palindrome Linked List
- 表单:单选框与隐藏域