Java for循环声明外部初始化

dev*_*per 9 java for-loop

根据我们所知道的形成Oracle for循环的文档:

for (initialization; termination; increment) {
    statement(s)
}
Run Code Online (Sandbox Code Playgroud)

例如,

class ForDemo {
    public static void main(String[] args){
         for(int i=1; i<11; i++){
              System.out.println("Count is: " + i);
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我们不能像这样在for循环之外声明初始化部分?

 class ForDemo {
    public static void main(String[] args){
         int i = 1;
         for(i; i<11; i++){
              System.out.println("Count is: " + i);
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

JFP*_*ard 8

你可以用:

 for(; i<11; i++){
      System.out.println("Count is: " + i);
 }
Run Code Online (Sandbox Code Playgroud)

但范围i不同.i现在将存在于循环之外.


GBl*_*ett 5

您可以.但是,您只需;在初始化通常所在的位置留空:

int i = 1;
for(; i<11; i++){
    System.out.println("Count is: " + i);
}
Run Code Online (Sandbox Code Playgroud)

不同之处在于,范围i现在扩展到循环之外.这可能是你想要的.否则,最好将变量保持在最严格的范围内.由于文档for环说:

在初始化表达式中声明它们会限制它们的生命周期并减少错误.

输出:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
Run Code Online (Sandbox Code Playgroud)


dev*_*per 0

引用Java文档

最好在初始化表达式中声明变量。名称 i、j 和 k 通常用于控制 for 循环;在初始化表达式中声明它们会限制它们的生命周期并减少错误。for循环的三个表达式是可选的;可以按如下方式创建无限循环:

// infinite loop
for ( ; ; ) {

    // your code goes here
}
Run Code Online (Sandbox Code Playgroud)

所以,我错过了。这是可能的,但并不有利。将初始化部分留空是解决方案

  for (  ;i <= 10 ; i++ ) {

        // i is defined outside already
    }
Run Code Online (Sandbox Code Playgroud)