为什么for循环中的递增/递减不以语句结束?

时间:2012-01-10 21:53:01

标签: java

我在其他任何地方用Java编写语句我需要用分号结束它。但是,这不适用于for循环的i ++。

怎么来的?

5 个答案:

答案 0 :(得分:2)

因为它的特殊语法具有清晰且商定的语义含义,可由编译器解释,因为C / C ++ / Java /等的设计者。任意决定它应该如此。

编辑:

一些评论者指出,该决定并非真正的仲裁,因为设计师这样做是为了保持与表达式与语句语法的一致性。我很高兴他们指出了这一点,因为我不知道是这样的。在我的辩护中,他们显然可以使语法在该位置需要分号;决定不是,虽然不是完全随意的,但代表了一种可能不同的选择。咳。

答案 1 :(得分:2)

因为')'很好地终止了update语句所以它会多余吗?

答案 2 :(得分:1)

在C和C ++中都是这样,Java复制了这些语言的大部分语法,以便让来自它们的程序员更容易。

此外,实际上没有必要用“;”结束语句,因为右括号“)”划分了语句结束的位置。

答案 3 :(得分:1)

我会花一些时间来学习表达和陈述之间的差异;正如here所述。

for循环的部分是表达式,而不是语句。表达式不以分号结束。 i++是一个表达。同样,你不要在i ++之后加一个分号:

System.out.println(i++;);
//                    ^ wrong

这没有任何意义。相同的逻辑适用于ifwhile循环。

答案 4 :(得分:1)

如果你考虑一下,for循环中的三个术语中的两个真的不是真正的陈述。采用规范的循环

for(int ix = 0; ix < MAX; ix++){ /* do something */ }

这是

的真正简写
int ix = 0;
while(ix < MAX){ /* do something */ ; ix++; }

请注意,ix < MAX也没有分号。在for循环中,分号只是用于以某种方式分离术语 - 仅通过共同发生(并且缺少额外符号)它与语句终止符相同。