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

Java for循环中的字符串文字与for循环中的stringbuilder,java,string,Java,String,我有一个问题 当我们这样做的时候 String str=“abc” “abc”将成为字符串文字,并将驻留在字符串池下 如果我们有如下循环中的字符串: private static void doByString() { String str; for(long l = 0; l < Long.MAX_VALUE; l++){ str = str + "" + l; } } private static voi

我有一个问题

当我们这样做的时候

String str=“abc”

“abc”将成为字符串文字,并将驻留在字符串池下

如果我们有如下循环中的字符串:

private static void doByString() {
        String str;
        for(long l = 0; l < Long.MAX_VALUE; l++){
            str = str + "" + l;
        }
    }
private static void doByString(){
字符串str;
对于(长l=0;l
它将产生大量字符串文本,我们必须在for循环中使用它

在这种情况下,我们能做些什么来最小化字符串文本的生成吗

在这种情况下,我们可以使用字符串生成器吗

private static void boByStringBuilder() {
        StringBuilder builder = new StringBuilder();
        for(long l = 0; l < Long.MAX_VALUE; l++){
            builder.append(l + "");
        }
    }
private static void boByStringBuilder(){
StringBuilder=新的StringBuilder();
对于(长l=0;l
它将产生大量字符串文本,我们必须在for循环中使用它

这不会创建任何字符串文本。它将创建字符串

在这种情况下,我们能做些什么来最小化字符串文本的生成吗

不需要,因为它不会产生任何问题

在这种情况下,我们可以使用字符串生成器吗

这两个代码都使用StringBuilder。第一个示例隐式使用StringBuilder

注:

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
    }
}
private static void boByStringBuilder(){
StringBuilder=新的StringBuilder();
对于(长l=0;l<大数值;l++){
builder.append(l);//更少的字符串
}
}
它将产生大量字符串文本,我们必须在for循环中使用它

这不会创建任何字符串文本。它将创建字符串

在这种情况下,我们能做些什么来最小化字符串文本的生成吗

不需要,因为它不会产生任何问题

在这种情况下,我们可以使用字符串生成器吗

这两个代码都使用StringBuilder。第一个示例隐式使用StringBuilder

注:

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
    }
}
private static void boByStringBuilder(){
StringBuilder=新的StringBuilder();
对于(长l=0;l<大数值;l++){
builder.append(l);//更少的字符串
}
}

无需每次在for循环中追加空字符串,请将append语句更改为

private static void boByStringBuilder() {
    StringBuilder builder = new StringBuilder();
    for(long l = 0; l < Long.MAX_VALUE; l++){
        builder.append(l);

    }
}
private static void boByStringBuilder(){
StringBuilder=新的StringBuilder();
对于(长l=0;l
无需每次在for循环中追加空字符串,请将append语句更改为

private static void boByStringBuilder() {
    StringBuilder builder = new StringBuilder();
    for(long l = 0; l < Long.MAX_VALUE; l++){
        builder.append(l);

    }
}
private static void boByStringBuilder(){
StringBuilder=新的StringBuilder();
对于(长l=0;l
是,这是StringBuilder的目的之一。类似的问题:和。长话短说,是,只要连接有任何逻辑阻止编译器用
StringBuilder
隐式替换
String
连接,就使用
StringBuilder
,这两个循环在功能上是不同的。第一个值相当于
String str=”“+(Long.MAX_值-1)(此处没有附加操作-您可以只执行最终执行)。是的,这是StringBuilder的目的之一。类似问题:和。长话短说,是,只要串联有任何逻辑阻止编译器用
StringBuilder
隐式替换
StringBuilder
串联,就使用
StringBuilder
,例如在这里的循环中。这两个循环在功能上是不同的。第一个值相当于
String str=”“+(Long.MAX_值-1)(此处没有附加操作-您也可以只执行最终执行)。