Java 的字符串连接在 'for' 循环中不起作用

标签 java arrays string

是的,我知道 Java 的字符串是不可变的,但仅凭这一点并不能解释为什么这对我不起作用...
当我尝试将字符串数组 (String[]) 转换为以下形式的一个字符串时遇到了这个问题:('String[0]','String[1]' ,...,'字符串[n]')
例如,给定以下数组:

String[] array=new String[3];
array[0]="Jake";
array[1]="Mishel";
array[2]="Dan";

我想创建字符串:('Jake','Mishel','Dan')
但是,如何做到这一点并不是这篇文章的目的...
我想知道的是,为什么这样做有效:

    String[] array=new String[3];

    array[0]="Jake";
    array[1]="Mishel";
    array[2]="Dan";

    for (int i=0; i<array.length; i++) {
        array[i]=array[i]+"'";
        array[i]="'"+array[i];
    }

    String str=Arrays.toString(array);
    str=str.replace('[','(');
    str=str.replace(']',')');

    System.out.println(str);  //produces ('Jake','Mishel','Dan'), as desired

但这不是:

    String[] array=new String[3];

    array[0]="Jake";
    array[1]="Mishel";
    array[2]="Dan";


    for (String str: array) {
        str=str+"'";
        str="'"+str;
    }

    String str=Arrays.toString(array);
    str=str.replace('[','(');
    str=str.replace(']',')');

    System.out.println(str); //produces wrong output: (Jake,Mishel,Dan)

?

最佳答案

它不起作用,因为在第二个中,您从数组中的每个索引中提取字符串的值作为 str,然后对 str 进行更改code>,而不是数组中的字符串(技术上没有变化,替换会是一个更好的词)。在第一个中,您用新值重写数组的索引。

实际上,在 for each 循环中,您使用的是与全局变量具有相同值的局部变量。但是,这是一个新变量,因此它在循环之外没有作用域。在常规的 for 循环中,您显式更新位于数组每个索引处的项目。

关于Java 的字符串连接在 'for' 循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293961/

相关文章:

java - Numberformat Google Spreadsheet API v4 Java

java - 在 Java 中优化历史字符串数组的代码

python - 用 `and` 条件替换 pandas 列中的部分字符串

java - 哪种 toArray 转换模式最适合使用?

java - doPost 请求如何工作?

javascript - jQuery 2.1.0 |增量显示元素

c++ - 如何反转数组中的元素?

C++ - 带有 std::string 的统一初始值设定项

python - 将字符串解释为 Python 中的其他数据类型

java - MongoDB - 合并两个 DBObjects