【发布时间】:2020-07-25 10:06:39
【问题描述】:
Java 面试准备中的一个问题,我没有找到答案
为什么不建议在循环中更改字符串?推荐使用什么?
【问题讨论】:
Java 面试准备中的一个问题,我没有找到答案
为什么不建议在循环中更改字符串?推荐使用什么?
【问题讨论】:
字符串是不可变的对象,因此当附加到字符串时,编译器可能必须创建至少一个新对象来保存结果。在循环中构造字符串需要在每次迭代中创建一个新字符串,因此会消耗更多的时间和内存。这会严重影响算法的性能。
This 提供了使用 StringBuffer 或 StringBuilder 更新字符串的解决方案。
r = new Random(120);
StringBuilder sb = new StringBuilder();
for(int i=0; i<100; i++) {
sb.append(r.nextInt(2));
}
s = sb.toString();
【讨论】:
new StringBuilder(100) -- 给定的大小应该比您预期的要大,但并非如此荒谬。在这里很容易弄清楚。