面试题答案
一键面试- 线程安全:
StringBuffer
是线程安全的,其方法大多使用synchronized
关键字修饰。在多线程环境下操作字符串,StringBuffer
能保证数据一致性,但性能相比StringBuilder
较低,因为线程同步会带来额外开销。 - 初始容量:创建
StringBuffer
对象时可指定初始容量。若未指定,默认初始容量为16。当插入的字符数超过当前容量时,StringBuffer
会自动扩容。频繁扩容会影响性能,因此预估字符串长度并设置合适初始容量,可减少扩容次数提升性能。 - 插入位置的边界检查:使用
insert
方法插入字符串时,要注意插入位置的边界。插入位置必须介于0(包括)和length()
(包括)之间。如果传入的位置参数超出这个范围,会抛出StringIndexOutOfBoundsException
异常。 - 方法链调用:
StringBuffer
的多数方法返回this
,支持方法链调用。如stringBuffer.append("a").insert(1, "b");
可连续操作,使代码更简洁,但要注意逻辑正确性和可读性,避免复杂嵌套影响维护。