String 与 StringBuilder — 程序设计选择题
题目
某程序需要把 500 条日志记录逐条拼接成一份完整报告文本。方案甲使用 String,在循环中写 report = report + line;方案乙使用 StringBuilder,在循环中调用 append(line),最后调用 toString() 一次得到结果。关于两种方案在拼接过程中对象创建情况的比较,下列说法正确的是:
A. 甲方案每次拼接都会新建一个 String 对象来存放结果,循环中产生大量临时对象;乙方案在追加过程中不新建 String,只在最后 toString() 时新建一次
B. 甲、乙两方案的对象创建次数相同,效率没有差别
C. 乙方案每次调用 append 都会新建一个 String 对象,比甲方案开销更大
D. String 内容可变,因此甲方案拼接时不会产生任何新对象