无图无真相,字符串相加原来是这样做的

175 阅读1分钟

面试官问我字符串想加如何和操作? 我:字符串相加有常见的有三种方法:

1、使用String +String

2、使用StringBuffer

3、使用StringBulider

先说第一种,两个字符串用“+”相连,过程是创建新的String对象,将字符串按照顺序复制进来,这种操作时候少量的新增操作,如果相加次数多就会频繁创建数组,效率低下。

第二种第三种,StringBuffer,StringBulider都实现了AbstractStringBuffer接口,相当于字符串的一个工具类; 其中维护了一个value 字符数组和count 当前字符数量,value的大小叫做容量,这个容量和String中的容量最大区别是,String容量和字符数相等,AbstractStringBuffer中字符数不大于容量,这样在一些情况下就不用新建数组,是提高效率的关键。使用空间换时间的思想。如图: 在这里插入图片描述

StringBuffer和StringBulider的区别是Stringbulider在方法上加了Synchronized关键字,在多线程情况向满足线程安全。

AbstractStringBuffer相加的过程如下: 在这里插入图片描述