站稳马步——(4)String/StringBuffer/StringBuilder
2010-11-02 11:31
387 查看
String、StringBuffer和StringBuilder的区别
这是面试中经常问到的问题。
所以,网上答案很多。
在开发中,如果确定字符串会经常变化(拼接),建议使用StringBuffer(线程安全);如果再确认是在单线程环境中,建议使用StringBuilder(非线程安全)。打开Jdk源代码看看便知:StringBuffer中方法基本都是同步的(synchronized)——线程安全;StringBuilder是从 JDK 5 开始,为StringBuffer补充了一个单个线程使用的等价类。
故而,基本性能是:StringBuilder>StringBuffer>String
这是面试中经常问到的问题。
所以,网上答案很多。
/** * * @author: ydj * @createTime: Nov 2, 2010 9:40:05 AM * */ public class TestStringStringBuffer { public static void stringReplace(String text) { // 把textString的地址copy给text,text也指向了textString的"java" // text.replace('j', 'i');的结果是"iava" // text = text.replace('j', 'i');就是重新使text指向"iava" // 由于该方法的返回类型是void,所以原来的textString没变 text = text.replace('j', 'i'); System.out.println(text); } public static void bufferReplace(StringBuffer text) { // textBuffer的地址copy给text // 然后沿着text指向的字符串(其实也就是textBuffer指向的对象)操作,添加一个"C" // 虽然没有任何返回,但是这个操作影响到了textBuffer所指向的字符串 // 所以上个方法打印"java",这个方法打印"javaC" text = text.append("C"); System.out.println(text); } public static void main(String args[]) { String textString = new String("java"); StringBuffer textBuffer = new StringBuffer("java"); StringBuilder textBuilder = new StringBuilder("java"); stringReplace(textString); bufferReplace(textBuffer); System.out.println(textString + textBuffer); } }
在开发中,如果确定字符串会经常变化(拼接),建议使用StringBuffer(线程安全);如果再确认是在单线程环境中,建议使用StringBuilder(非线程安全)。打开Jdk源代码看看便知:StringBuffer中方法基本都是同步的(synchronized)——线程安全;StringBuilder是从 JDK 5 开始,为StringBuffer补充了一个单个线程使用的等价类。
故而,基本性能是:StringBuilder>StringBuffer>String
相关文章推荐
- String StringBuffer StringBuilder (转)
- 黑马程序员——基础学习(九)String的实际案例及StringBuffer/StringBuilder
- String StringBuilder StringBuffer 对比 总结得非常好
- String StringBuilder and StringBuffer
- String and StringBuffer and StringBuilder的区别
- java之String & StringBuffer & StringBuilder
- StringBuffer vs. StringBuilder
- String/StringBuffer/StringBuilder学习记录
- String StringBuffer StringBuilder的区别
- String StringBuilder StringBuffer 对比 总结得非常好
- String/StringBuffer/StringBuilder详细对比
- 转:String StringBuffer StringBuilder区别
- String\StringBuffer\StringBuilder的区别
- StringBuilder/StringBuffer的insert, append复杂度分析
- [JAVA]String StringBuffer StringBuilder
- stringbuilder stringbuffer
- Java学习日志(13-2-StringBuffer/StringBuilder与基本数值类型包装类)
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- 用StringBuffer/StringBuilder对字符串进行拼接