【发布时间】:2016-05-22 05:02:17
【问题描述】:
我正在学习 Java 认证,在一次模拟考试中,我看到了一个非常奇怪的 For 循环实现。该练习显示了以下语法:
for (Days d: Days.values());
一开始,我以为是语法错误,因为我一直都知道“For循环”的语法需要大括号,或者,如果只有一条指令要迭代,我们可以跳过大括号并设置我们的语句在循环之后对齐。 -- 因为我之前没有见过以分号“;”结尾的 For 循环。--
然后我试图找到一些关于它的文档,但不幸的是我找不到任何解释为什么是合法代码声明。仅引用以下语法:
The syntax of enhanced for loop is:
for(declaration : expression)
{
//Statements
}
奇怪的是,在所有这些之后,我测试了我的代码,令人惊讶的是它编译并运行正常。然后,根据我所做的一些测试(玩代码),我发现似乎“;”就像一个空的 For 循环,但带有花括号,因此,它之后的任何指令都只执行一次。 (好像代码在哪里循环)。但我不确定这是否是增强 for 循环中分号的正确解释。
请查看完整示例:
package com.TestDays;
public class TestDays {
public enum Days { MON, TUE, WED};
public static void main(String[] args) {
int x = 0;
*for (Days d: Days.values());*
Days[] d2 = Days.values();
System.out.println(d2[2]);
}
}
- 有谁知道为什么允许这种语法? 谢谢。
【问题讨论】:
-
一个
for (Days d: Days.values());和for (Days d: Days.values()){ //nothing inside the curlies }一样,是一个空的for语句。