String ,StringBuilder, StringBuffer

先总结性的说明下三个的主要区别:

String :字符串常量

StringBuffer:字符串变量(线程安全)

 StringBuilder:字符串变量(线程不安全)

一.定义

ChatSequence接口

|-----String |------AbstractStringBuilder

   | ---------StringBuilder

    | ---------StringBuffer

二.使用场景

使用 String 类的场景:在字符串不经常变化的场景中可以使用 String 类,例如常量的声明、少量的变量运算。

使用 StringBuffer 类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用 StringBuffer,例如 XML 解析、HTTP 参数解析和封装。

使用 StringBuilder 类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用 StringBuilder,如 SQL 语句的拼装、JSON 封装等。

更好的资料参考

https://segmentfault.com/a/1190000002683782