【发布时间】:2010-09-11 17:23:51
【问题描述】:
String s = "";
for(i=0;i<....){
s = some Assignment;
}
或
for(i=0;i<..){
String s = some Assignment;
}
我再也不需要在循环外使用“s”了。 第一个选项可能更好,因为每次都不会初始化新的字符串。然而,第二个会导致变量的范围被限制在循环本身。
编辑:回应 Milhous 的回答。将字符串分配给循环内的常量是没有意义的,不是吗?不,这里的“一些分配”是指从被迭代的列表中获得的变化值。
另外,问题不是因为我担心内存管理。只是想知道哪个更好。
【问题讨论】:
-
迭代指定为文字的字符串集合并不罕见。例如,表的列标题可能硬编码为 String[]。不过,重要的是在两种情况下都会发生相同的分配,因此不会影响答案。
-
另一条评论:不要忘记,如果您不打算更改
s的值,您应该 声明它final。许多 Java 程序员经常忘记这一点。
标签: java performance string garbage-collection