For循环中的字符串文字与for循环中的stringbuilder

时间:2016-09-02 12:19:50

标签: java string

我有一个问题。

当我们做的时候

  

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 + "");
        }
    }

2 个答案:

答案 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);

    }
}