gpt4 book ai didi

java - 为什么 return 语句后不允许有额外的分号,而其他语句允许使用分号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:47 25 4
gpt4 key购买 nike

我在System.out.println的分号后面多加了一个分号:

System.out.println();;

这对 Java 编译器来说是合法的,所以我检查了其他语句,它们也都是合法的。所以当我搜索并找到这些链接时:

  1. Why does Java not show an error for double semicolon at the end of a statement?

  2. Compiler doesn't complain when I ended a line with two semicolons. Why?

  3. When would you put a semicolon after a method closing brace?

  4. Why does code with successive semi-colons compile?

  5. Semicolon at end of 'if' statement

我开始明白,一个额外的分号意味着一个额外的空语句。

但是,当我在 return 语句后多加一个分号时,出现了编译时错误。我得出的结论是 return 语句被认为是执行流程中的最后一条语句,因此在 return 之后放置一个额外的语句是非法的。

同样的事情也发生在这段代码中:

if(a == b)
System.out.println();;
else
System.out.println();

if 语句中 System.out.println();; 给出编译时错误,因为编译器期望 elseif其他。我说得对还是有其他原因?

最佳答案

Why multiple semicolon is not allowed after the return statement, when it is allowed for all other statement?

只是因为当你有这样的陈述时

System.out.println();;

这意味着你有两个语句,一个是 System.out.println(); 另一个语句在第一个 semi colon 之后,它是空的,这是允许的但是 return 语句之后不能有任何空语句或任何其他语句,因为它永远不会执行,换句话说,它的无法访问的语句并且您不能在您的代码中包含无法访问的语句

Same thing happens in this code too

if(a == b)
System.out.println();;
else
System.out.println();

那是因为,当你有一个 else 语句时,它之前的语句应该是 if 语句,而在上面的代码片段中不是这种情况,因为 之前的语句>else 语句是不允许的空语句

如果你在 if 语句之后有括号,比如

if(a == b) {
System.out.println();;
}
else
System.out.println();

你不会得到任何错误,因为现在空语句在 if block 中,而 else 之前的语句是 if 语句 而不是空语句 当您在 if 语句

后没有括号时就是这种情况

关于java - 为什么 return 语句后不允许有额外的分号,而其他语句允许使用分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48023291/

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