String,StringBuffer,StringBuilder的区别
String,StringBuffer,StringBuilder的区别分为两个部分:运行速度和线程安全两个方面。
关于运行速度
StringBuilder > StringBuffer >String
首先String是字符串常量,而StringBuilder和StringBuffer 是字符串变量,意味着String对象创建后不能更改,只能在new出一个新对象接受修改值,然后GC会回收旧值。但StringBuilder和StringBuffer 能直接修改,所以运行速度上优于String,StringBuffer在几乎所有的方法上都加上了synchronized,所以在运行速度上慢于StringBuilder
关于线程安全
String对象本身是不可变的,会被存在一个叫常量池的内存区域,所以算是线程安全的。
StringBuffer因为在几乎所有的方法上都加上了synchronized,所以线程安全的
StringBuilder却线程不安全。