String StringBuffer StringBuilder三者的异同?
String:不可变的字符序列; 底层使用char[] 存储
StringBuffer:可变的字符序列; 线程安全的,效率低, 底层使用char[] 存储
StringBuilder:可变的字符序列; JDK5.0新增, 线程不安全的,效率高, 底层使用char[] 存储
对比三者的效率:
效率从高到低排列:StringBuilder > StringBuffer > String
StringBuffer分析:
扩容问题:如果添加的数据底层数组盛不下了,那就需要扩容底层的数组
默认情况下,扩容为原来容量的2倍 + 2 , 同时将原有的数组中的元素复制到新的数组中
指导意义:开发中建议大家使用:StringBuffer(int capacity)
常用方法: