Java 因为每个循环都是向后迭代的

Java 因为每个循环都是向后迭代的,java,foreach,Java,Foreach,给定代码 String[] p = { "A", "B", "C", "D" }; String b = ""; for ( String q : p ) b = q + b; System.out.println( b ); 我以为输出是“ABCD”,但它是“DCBA” 为什么??您的循环将每个元素预先添加到b。 即: 在“A”->“A”前面加上前缀 前置“B”->“BA” 在“C”->“CBA”前面加上前缀 前置“D”->“DCBA” 如果要获取“ABCD”,请将逻

给定代码

String[] p = { "A", "B", "C", "D" }; 
String b = ""; 

for ( String q : p ) 
   b = q + b; 

System.out.println( b ); 
我以为输出是“ABCD”,但它是“DCBA”

为什么??

您的循环将每个元素预先添加到
b
。 即:

  • 在“A”->“A”前面加上前缀
  • 前置“B”->“BA”
  • 在“C”->“CBA”前面加上前缀
  • 前置“D”->“DCBA”
如果要获取“ABCD”,请将逻辑更改为附加:

循环将每个元素前置到
b
。 即:

  • 在“A”->“A”前面加上前缀
  • 前置“B”->“BA”
  • 在“C”->“CBA”前面加上前缀
  • 前置“D”->“DCBA”
如果要获取“ABCD”,请将逻辑更改为附加:

因为在

b = q + b;
  • q
    表示循环从数组中获取的当前元素
  • b
    是先前连接的结果
这意味着您正在旧结果前面添加新零件。

因为

b = q + b;
  • q
    表示循环从数组中获取的当前元素
  • b
    是先前连接的结果
这意味着您正在旧结果前面添加新部分。

表达式

q + b;
表示
新元素+旧字符串

对于通过4元素数组的每次迭代,值为

b = "A" + "" - resulting in "A"
b = "B" + "A" - resulting in "BA"
b = "C" + "BA" - resulting in "CBA"
b = "D" + "CBA" - resulting in "DCBA"
将作业更改为 b=b+q; 或 b+=q

表达式

q + b;
表示
新元素+旧字符串

对于通过4元素数组的每次迭代,值为

b = "A" + "" - resulting in "A"
b = "B" + "A" - resulting in "BA"
b = "C" + "BA" - resulting in "CBA"
b = "D" + "CBA" - resulting in "DCBA"
将作业更改为 b=b+q; 或 b+=q