String、StringBuffer、StringBuilder的区别
来源:互联网 发布:mac os x 10.7 .2 iso 编辑:程序博客网 时间:2024/06/03 19:57
(1)执行速度方面:StirngBuilder>StringBuffer>String。因为String是不可变的对象, 因此在每次对String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。所以多数情况下推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。在大部分情况下,StringBuilder > StringBuffer。这主要是StringBuilder:线程非安全的;StringBuffer:线程安全的,由于StringBuilder不需要考虑线程安全。
(2)String:字符串常量;StringBuffer:字符创变量;StringBuilder:字符创变量
(3)在某些特别情况下, String 对象的字符串拼接其实是被 Java Compiler 编译成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,例如:
- String s1 = “This is only a” + “ simple” + “ test”;
- StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
Java Compiler直接把上述第一条语句编译为:
- String s1 = “This is only a simple test”;
所以速度很快。但要注意的是,如果拼接的字符串来自另外的String对象的话,Java Compiler就不会自动转换了,速度也就没那么快了,例如:
- String s2 = “This is only a”;
- String s3 = “ simple”;
- String s4 = “ test”;
- String s1 = s2 + s3 + s4;
这时候,Java Compiler会规规矩矩的按照原来的方式去做,String的concatenation(即+)操作利用了StringBuilder(或StringBuffer)的append方法实现,此时,对于上述情况,若s2,s3,s4采用String定义,拼接时需要额外创建一个StringBuffer(或StringBuilder),之后将StringBuffer转换为String;若采用StringBuffer(或StringBuilder),则不需额外创建StringBuffer。
(4)1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String, StringBuffer, StringBuilder的区别?
- String,StringBuffer, StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String , StringBuffer, StringBuilder的区别
- String 、 StringBuffer 、StringBuilder 的区别
- String StringBuffer StringBuilder的区别
- String、StringBuffer、StringBuilder的区别
- String, StringBuffer, StringBuilder的区别
- String StringBuffer StringBuilder的区别
- string、stringbuffer、stringbuilder的区别
- String、StringBuffer 、StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String ,StringBuffer,StringBuilder的区别
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String,StringBuffer,StringBuilder的区别?
- 缓存算法和缓存策略的介绍
- mysql建表示例 与 从ecshop的category表中扒取数据
- IBM黑衣小组
- Ubantu修改环境变量
- sscanf()总结
- String、StringBuffer、StringBuilder的区别
- thinkphp 邮件发送
- 面试题[后缀数组]: 最长重复子串
- WildCardQuery通配符查找
- 初识Dubbo 系列之1-Dubbo是什么
- 三目运算符“?:”省略中间操作数的分析
- POJ 2429 GCD & LCM Inverse (大整数素性测试与因式分解)
- Learn UML with JUDE
- 调研HEVC中RC的方法分类