Java中没有括号的for循环

zod*_*645 -1 java for-loop curly-braces

我不知道为什么以下两个代码会给出不同的结果;

for(i = 1, j = 0; i < 10; i++) {
    j += i;
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

此数字给出1至10之间的数字。

for(i = 1, j = 0; i < 10; i++)
    j += i;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

但是这个给了10。

for()
do_something;
do_something_else;
Run Code Online (Sandbox Code Playgroud)

And*_*eas 6

for循环的while循环,和if语句(忽略else所有控制单个语句

for ( [ForInit] ; [表达式] ; [ForUpdate] ) 语句

for ( {VariableModifier} UnannType VariableDeclaratorId : 表达式 ) 语句

while ( 表达 ) 声明

if ( 表达 ) 声明

该语句可能是Block,即{}带有多个语句的括号。

因此,此代码完全相同:

for(i=1, j=0;i<10;i++)
j += i;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
for(i=1, j=0;i<10;i++)
    j += i;
    System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
for(i=1, j=0;i<10;i++)
    j += i;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
for(i=1, j=0;i<10;i++) {
    j += i;
}
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

前两个非常糟糕,因为它们隐藏(虚假表示)代码结构。

许多人主张始终使用块,以防止混淆和编码错误。