为什么在这个for循环之后有一个分号?

use*_*548 1 java for-loop

我遇到了这段代码

for(; tail < len;tail++){
        str[tail] = 0;
Run Code Online (Sandbox Code Playgroud)

为什么会有";" 就在"for("?之后?

当我拿出它时,它出现了一些错误.

Mar*_*ers 8

这意味着没有初始化(它已经在之前的行上完成).

通常,for循环具有以下语法:

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

所有三个表达式(初始化,终止和增量)都是可选的,但必须存在分号.您拥有的代码等同于以下while循环:

while (tail < len) {
    str[tail] = 0;
    tail++;
}
Run Code Online (Sandbox Code Playgroud)

查看缺少所有三个表达式的循环也很常见:

for (;;) {
    // something
}
Run Code Online (Sandbox Code Playgroud)

这是一个无限循环,相当于:

while (true) {
    // something
}
Run Code Online (Sandbox Code Playgroud)