String
-
final修饰,不可被继承,不可变对象
-
底层使用char 数组(final char value[];)实现,不可变
-
拼接,裁剪等操作都会产生新的字符串
StringBuilder,StringBuffer
-
StringBufer和StringBuilder都是利用(char,JDK 9以后是byte)数组实现且没有被final修饰,可以修改
-
二者都继承自AbstractStringBuilder,里面包含了基本操作,及自动扩容机制(初始值为16,长度不够时扩容为原数组的2倍加2),区别仅在于StringBuffer最终的方法加了synchronized
-
java8中javac编译时会自动把字符串拼接操作转换为StringBuilder操作
-
多线程环境使用StringBuffer
-
执行速度StringBuilder > StringBuffer > String
网友评论