为什么必须在 for 循环初始化中声明变量?

mig*_*der 10 java

int v = 0;

for (v; v<2; v++) {
    ...

}
Run Code Online (Sandbox Code Playgroud)

为什么这在 Java 中是不允许的?

为什么我们必须v在for循环初始化中声明变量?我知道如果我这样做的话,这不是一个声明,但为什么 Java 不允许上述内容?

Era*_*ran 13

如果v在循环之前声明,则应将 for 语句的第一部分留空:

int v = 0;

for (; v < 2; v++) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

只写没有意义v;


Nex*_*vis 5

如果删除声明中的无关内容v(假设v事先声明),则循环声明有效:

将其更改为 for(; v < 2; v++)

传统for循环中的所有三个修饰符在 Java 中都是可选的。

替代示例:

下面与while (true)循环相同:

for (;;) {

}
Run Code Online (Sandbox Code Playgroud)

添加额外的增量:

int j = 0;
for (int k = 0; k < 10; k++, j++) {

}
Run Code Online (Sandbox Code Playgroud)

添加额外的条件来终止循环:

int j = 0;
for (int k = 0; k < 10 || j < 10; k++, j++) {

}
Run Code Online (Sandbox Code Playgroud)

声明多个相同类型的变量:

for (int k = 0, j = 0; k < 10 || j < 10; k++, j++) {

}
Run Code Online (Sandbox Code Playgroud)

很明显,您可以根据需要混合和匹配任何这些,完全省去您想要的任何一个。