Java 如何创建数组的字符串

Java 如何创建数组的字符串,java,arrays,string,int,Java,Arrays,String,Int,我试图创建一个数组{1,2,3,4,5,6,7}的字符串,但在运行它时,我似乎无法得到正确的答案 int [] arr = {1, 2, 3, 4, 5, 6, 7}; String s = " "; for(int i = 0; i < arr.length; i++){ s = (arr[i] + ", "); } System.out.println(s); int[]arr={1,2,3,4,5,6,7}; 字符串s=“”; 对于(int i=0;i

我试图创建一个数组{1,2,3,4,5,6,7}的字符串,但在运行它时,我似乎无法得到正确的答案

int [] arr = {1, 2, 3, 4, 5, 6, 7};
String s = " ";

for(int i = 0; i < arr.length; i++){
  s = (arr[i] + ", ");
}

System.out.println(s);
int[]arr={1,2,3,4,5,6,7};
字符串s=“”;
对于(int i=0;i
我得到的答案是7,当我真的跳到1,2,3,4,5,6,7的时候

有人能给我解释一下为什么下面的代码给出了正确的答案,但是当我使用字符串时却没有,以及我应该如何更正上面的代码

int [] arr = {1, 2, 3, 4, 5, 6, 7};

for(int i = 0; i < arr.length; i++){
  System.out.print(arr[i] + ", ");
}
int[]arr={1,2,3,4,5,6,7};
对于(int i=0;i
将代码更改为:

for(int i = 0; i < arr.length; i++){
  s += (arr[i] + " ");   <<---- you we're missing the '+' 
}
for(int i=0;i将代码更改为:

for(int i = 0; i < arr.length; i++){
  s += (arr[i] + " ");   <<---- you we're missing the '+' 
}
for(int i=0;i+=
),而不只是为每个数字重新分配字符串(使用
=

或者,如果您不想被担心性能的人斥责,请使用:

或者只使用来完成整个操作。

您需要附加到字符串中。也就是说,您需要在末尾添加另一个数字(使用
+=
),而不只是为每个数字重新分配字符串(使用
=

或者,如果您不想被担心性能的人斥责,请使用:


或者只使用来完成整个操作。

如果使用
s=(arr[i]+”;
,则覆盖字符串


最好使用
s++=(arr[i]+);
s=s.concat(arr[i]+);

如果使用
s=(arr[i]+);
覆盖字符串


最好使用
s++=(arr[i]+);
s=s.concat(arr[i]+);
在每次迭代
s=arr[i]+”
时,您都在重新初始化
s
,因此当循环完成时
s
将是数组中的最后一个值

要将所有值添加到
s
中,必须使用
+=
而不是
=


例如,
s+=String.valueOf(arr[i])+“”
您在每次迭代时都要重新初始化
s
s=arr[i]+“”
因此循环完成时
s
将是数组中的最后一个值

要将所有值添加到
s
中,必须使用
+=
而不是
=


例如,
s+=String.valueOf(arr[i])+“

第一个代码的问题是对象s在For循环的每次迭代中都被重写…这就是为什么它会打印最后一个被重写的值,即7 打印所有可以使用的值
s=s+(arr[i]+“,”);

第一个代码的问题是对象s在for循环的每次迭代中都被覆盖……这就是为什么它会打印最后一个被覆盖的值,即7 打印所有可以使用的值
s=s+(arr[i]+“,”);

如果您希望在每次从数组中获取值时将其打印出来,则应将
System.out.println(s);
放在
for
循环的
内部,而不是在
for
循环之后。如果您希望在一行中打印所有值,则应使用
s.concat(arr[i]+“,”;
。这会将数组中的值添加到字符串的末尾。

如果希望每次从数组中获取值时都将其打印出来,则应将
System.out.println
for
循环的内部,而不是在
for
循环之后。如果希望在一行中打印所有内容,则应使用
s.concat(arr[i]+”;
。这会将数组中的值添加到字符串的末尾。

基本上,对于您要查找的内容,只需更改
s=(arr[i]+“,”);
s=s.concat(arr[i]+“,”);
。这将为您提供一个打印出来的列表。为了让它看起来更美观,您可以对字符串进行字符计数,并使用子字符串删除最后一个逗号


我希望这会有所帮助。

基本上,对于您正在寻找的内容,只需将
s=(arr[I]+”,”;
更改为
s=s.concat(arr[I]+”,”;
。这将为您提供一个打印出来的列表。为了让它看起来更漂亮,您可以对字符串进行字符计数并使用子字符串删除最后一个逗号


我希望这能有所帮助。

那么
Arrays.toString()呢
?只需将
=
替换为
+=
,除了对代码进行技术调试外,当您在循环中构建类似的字符串时,请使用
StringBuilder
。Java
string
对象是不可变的,创建和丢弃大量中间副本的成本很高;
StringBuilder
允许您添加所需的所有字符,然后将其转换为
字符串
。根据关闭原因,投票关闭typo@Everv0id这也行得通,多亏了我是编程新手,所以我尽量避免使用内置的关于
Arrays.toString()的codesHow
?只需将
=
替换为
+=
,除了对代码进行技术调试外,当您在循环中构建类似的字符串时,请使用
StringBuilder
。Java
string
对象是不可变的,创建和丢弃大量中间副本的成本很高;
StringBuilder
允许您添加所需的所有字符,然后将其转换为
字符串
。根据关闭原因,投票关闭typo@Everv0id这也行得通,谢谢。但由于我是编程新手,所以我尽量避免使用内置的代码。谢谢解释,我没有意识到字符串是这样工作的。@stargazer:为了更好地合作正确,不是字符串是这样工作的。是赋值运算符“=”是这样工作的。谢谢你的解释,我没有意识到字符串是这样工作的。@st
for (int n : arr) {
    s += n + " ";
}
StringBuilder sb = new StringBuilder();
for (int n : arr) {
    s.append(n).append(' ');
}
String s = sb.toString();