gpt4 book ai didi

java - 为什么增强的 for 循环在以分号结束时不会失败?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:41:18 25 4
gpt4 key购买 nike

我正在学习 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]);
}

}
  • 有谁知道为什么允许使用这种语法?谢谢。

最佳答案

https://docs.oracle.com/javase/specs/jls/se7/html/jls-18.html

for 循环定义为:

  for ( ForControl ) Statement

; 是 Java 中的有效语句,就像语句 block 一样。这种形式的循环并不常见,但您可以执行以下操作:

 int i = 2;
for(; i < 100; i*=2);
// i is now the smallest power of two greater than 100

关于java - 为什么增强的 for 循环在以分号结束时不会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37370746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com