面试题答案
一键面试优化策略
- 使用
StringBuilder
进行文本修改操作:由于String
对象是不可变的,每次对String
进行插入、删除和拼接操作都会创建新的String
对象,这在处理大段文本时会导致大量的内存开销。而StringBuilder
是可变的,适合用于频繁修改文本的场景。 - 在需要调用
String
特定方法时再转换:在需要使用indexOf
、substring
等String
方法时,先将StringBuilder
转换为String
,因为这些方法在String
类中有更高效的实现,并且不会对原StringBuilder
对象产生影响。
关键代码示例
public class TextProcessor {
public static void main(String[] args) {
StringBuilder textBuilder = new StringBuilder("初始文本内容");
// 频繁的插入操作
textBuilder.insert(0, "插入的前缀 ");
textBuilder.append(" 插入的后缀");
// 频繁的删除操作
textBuilder.delete(0, 3); // 删除前3个字符
// 拼接操作
textBuilder.append(" 拼接的新内容");
// 转换为String以调用String的方法
String text = textBuilder.toString();
int index = text.indexOf("拼接");
if (index != -1) {
String subText = text.substring(index);
System.out.println(subText);
}
}
}
在上述代码中,首先使用StringBuilder
进行频繁的插入、删除和拼接操作,在需要调用indexOf
和substring
方法时,将StringBuilder
转换为String
来调用这些方法,以达到性能优化的目的。