在什么情况下将命令放在Java for循环更新语句中是有用的?

时间:2015-11-14 21:16:02

标签: java for-loop

我昨天发现你可以创建一个看起来像这样的Java for循环

for (int j = 0; j < myArray.length; System.out.println(j), j++ ) {

/* code */

}

这对我来说真的很不寻常。何时编码可接受/有用?

6 个答案:

答案 0 :(得分:7)

如果我有两个循环变量,我只会这样做,例如:

for(int i = 0, j = 10; i < 10 && j > 0; i++, j--) {
...
}

除此之外,我不建议这样做,因为它模糊了for循环实际做的事情。最好在实际体内放置带副作用的方法调用。

答案 1 :(得分:3)

这相当于:

for (int j = 0; j < myArray.length; j++ ) {
  System.out.println(j);
}

我没有看到使用它的任何好处,除了欺骗学生参加考试。检查学生是否完全了解for循环的功能可能很有用。

答案 2 :(得分:3)

你也可以这样做

for (int j = 0; j < myArray.length; System.out.println(j++)) {

}

答案 3 :(得分:2)

在update语句中具有两个操作的能力的一个可能用途是,您可以同时操作两个变量。像,

for (int i = 0, j = 10; i < 10 && j > 0; i++, j--) {
    System.out.printf("i = %d, j = %d%n", i, j);
}

答案 4 :(得分:2)

官方的java文档说明了关于for循环的以下内容:

  

for 语句的一般形式可表示如下:

for(initialization; termination; increment) {
     statement(s) 
}
  

使用此版本的for语句时,请记住:

     
      
  1. 初始化表达式初始化循环;当循环开始时,它被执行一次。
  2.   
  3. 终止表达式的计算结果为false时,循环终止。
  4.   
  5. 每次迭代循环后都会调用 increment 表达式;这个表达式增量是完全可以接受的   或减少价值。
  6.   

因此,虽然在增量部分中可能会有System.out.println(j)之类的内容,但根据官方文档,它违反了编码约定。

允许在增量部分中使用多个以逗号分隔的语句的原因是因为您可能需要在执行期间调整多个变量的值循环。因此,只有在这种情况下才能使用此语法糖可接受有用。以下示例说明了此方案:

for(int i = 0, j = 10; i < 10 && j >= 0; i++, j--) {
   // Statements
}

答案 5 :(得分:1)

它实际上使代码更有意义,使其更具可读性。如果在每次迭代结束时需要执行多于1条指令(比如递增循环计数器),这将非常有用。它通常用于循环遍历多维数组。