先总结性的说明下三个的主要区别:
String :字符串常量
StringBuffer:字符串变量(线程安全)
StringBuilder:字符串变量(线程不安全)
一.定义
ChatSequence接口
|-----String |------AbstractStringBuilder
| ---------StringBuilder
| ---------StringBuffer
二.使用场景
使用 String 类的场景:在字符串不经常变化的场景中可以使用 String 类,例如常量的声明、少量的变量运算。
使用 StringBuffer 类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用 StringBuffer,例如 XML 解析、HTTP 参数解析和封装。
使用 StringBuilder 类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用 StringBuilder,如 SQL 语句的拼装、JSON 封装等。
更好的资料参考
https://segmentfault.com/a/1190000002683782
String ,StringBuilder, StringBuffer
原文:http://www.cnblogs.com/chuiyuan/p/5187205.html