根据我们所知道的形成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)
你可以用:
for(; i<11; i++){
System.out.println("Count is: " + i);
}
Run Code Online (Sandbox Code Playgroud)
但范围i不同.i现在将存在于循环之外.
您可以.但是,您只需;在初始化通常所在的位置留空:
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)
引用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)