我有一个问题。
当我们做的时候
String str =" abc&#34 ;;
" ABC"将成为字符串文字并将驻留在字符串池下。
如果我们在for循环中有字符串,如下所示:
private static void doByString() {
String str;
for(long l = 0; l < Long.MAX_VALUE; l++){
str = str + "" + l;
}
}
它会产生大量的字符串文字,我们必须在for循环中使用它。
在这种情况下,我们可以做些什么来最小化字符串文字的制作吗?
我们可以在这种情况下使用字符串构建器,如:
private static void boByStringBuilder() {
StringBuilder builder = new StringBuilder();
for(long l = 0; l < Long.MAX_VALUE; l++){
builder.append(l + "");
}
}
答案 0 :(得分:4)
它会产生大量的字符串文字,我们必须在for循环中使用它。
这不会创建任何字符串文字。它将创建字符串。
在这种情况下,我们可以做些什么来最小化字符串文字的制作吗?
不需要,因为它不会创建任何。
我们可以在这种情况下使用字符串构建器,如
两个代码都使用StringBuilder。第一个示例隐式使用StringBuilder。
注意:
builder.append(l + "");
与
相同builder.append(new StringBuilder().append(l).append("").toString());
你可以写
private static void boByStringBuilder() {
StringBuilder builder = new StringBuilder();
for(long l = 0; l < BIG_NUMBER; l++) {
builder.append(l); // less Strings
}
}
答案 1 :(得分:1)
每次在for循环中都不需要追加空字符串,将append语句更改为
private static void boByStringBuilder() {
StringBuilder builder = new StringBuilder();
for(long l = 0; l < Long.MAX_VALUE; l++){
builder.append(l);
}
}