String:适用于少许的字符串操做的状况。缓存
StringBuilder:适用于单线程下在字符缓冲区(一种容器)进行大量操做的状况。线程不安全的。安全
StringBuffer:适用多线程下在字符缓冲区进行大量操做的状况。 线程安全。多线程
三个类之间的区别是,线程安全与运行速度,运行速度:StringBuilder (不安全)> StringBuffer (安全)> String。ui
后面两个类的运行速度都 > String ,理由是 String 是字符串常量,String 对象一旦建立就不可改变。所以String每次改变,都等同于从新建立一个新 String 对象,而后指针指向新的 String。StringBuilder 与 StringBuffer 是字符串变量。线程
线程安全,指针
若是一个 StringBuffer 对象,在字符串缓存区域,被多个线程使用,StringBuffer 里有许多方法是带有 synchronized 关键字。能够保证线程安全。而 StringBuilder 没有该关键字,因此多线程最好使用 前者,单线程能够使用速度快的 StringBuilder对象