Stirng、StringBuffer、StringBuilder的区别浅谈
来源:互联网 发布:淘宝刷单群 编辑:程序博客网 时间:2024/05/20 12:46
Stirng、StringBuffer、StringBuilder的区别浅谈
1. String 类
String的值是不可变的,查看源码可以发现string类的属性为final。
String a = "data";
a = a+"data2"
以上代码通过字节码源文件可以看到工作原理
String a = "data";
StringBuilder sb = new StringBuilder();
sb .append(a).append("data");
a = sb.toString();
使用字符拼接明显可以看出创建了缓存对象,如果使用大量的字符拼接时,垃圾回收多次执行,降低了性能。
2. StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,
当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。
3.StringBuilder
StringBuilder和StringBuffer类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,
相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuilder和StringBuffer类。
4.线程安全
StringBuffer 线程安全
StringBuilder 线程不安全
5.速度
StringBuilder>StringBuffer>String 执行速度是相对的,不是绝对的
6.总结
(1)操作少量数据时使用 String
(2)单线程操作大量字符串数据时使用StringBuilder
(3)多线程操作大量字符串数据时使用StringBuffer
参考资料
字符串使用"+"连接的原理.
http://blog.csdn.net/gaoxuaiguoyi/article/details/50502625
字节码源文件查看
http://www.2cto.com/kf/201304/202018.html
* 以上纯属个人理解,有什么不足和错误欢迎指出。
1 0
- Stirng、StringBuffer、StringBuilder的区别浅谈
- JAVA关于Stirng,StringBuilder,StringBuffer的比较
- 浅谈String、StringBuffer、StringBuilder的区别
- Stirng,Stringbuffer,Stringbuild的区别浅淡
- Stirng,Stringbuffer,Stringbuild的区别浅淡
- Stirng,Stringbuffer,Stringbuild的区别浅淡
- Stirng-Stringbuild-Stringbuffer区别
- StringBuffer、StringBuilder的区别?
- StringBuilder,StringBuffer的区别
- Java基础之String,StringBuffer与StringBuilder的区别浅谈
- java:浅谈String Stringbuilder Stringbuffer 区别
- String,StringBuffer,StringBuilder的区别
- StringBuffer 与 StringBuilder的区别?
- String StringBuffer StringBuilder的区别
- StringBuilder与StringBuffer的区别
- stringbuffer 和stringbuilder的区别
- String, StringBuffer, StringBuilder的区别?
- Stringbuffer和StringBuilder的区别
- Java动态代理
- QT之GUI学习笔记( 二十三)---绘图设备
- Leetcode-537. Complex Number Multiplication
- android View绘制源码分析(下)
- jsonp的原理,应用场景,优缺点
- Stirng、StringBuffer、StringBuilder的区别浅谈
- C++标准库类型string用法小结
- 机器学习与数据挖掘之决策树
- 动态代理
- c++实现双向链表
- 从此再有不愁自定义View——Android自定义view详解
- 长沙麓山风湿医院
- HTTP要点概述:六,HTTP报文
- C语言中用于计算数组长度的函数 “strlen() ”。