面试官问我字符串想加如何和操作?
我:字符串相加有常见的有三种方法:
1、使用String +String
2、使用StringBuffer
3、使用StringBulider
先说第一种,两个字符串用“+”相连,过程是创建新的String对象,将字符串按照顺序复制进来,这种操作时候少量的新增操作,如果相加次数多就会频繁创建数组,效率低下,
第二种第三种,StringBuffer,StringBulider都实现了AbstractStringBuffer接口,相当于字符串的一个工具类,其中维护了一个value 字符数组和count 当前字符数量,value的大小叫做容量,这个容量和String中的容量最大区别是,String容量和字符数相等,AbstractStringBuffer中字符数不大于容量,这样在一些情况下就不用新建数组,是提高效率的关键。使用空间换时间的思想。如图:
StringBuffer和StringBulider的区别是Stringbulider在方法上加了Synchronized关键字,在多线程情况向满足线程安全。
AbstractStringBuffer相加的过程如下: