Aru*_*ran 7 java compiler-errors return
我在分号后添加了一个额外的分号System.out.println:
System.out.println();;
Run Code Online (Sandbox Code Playgroud)
这对Java编译器来说是合法的,所以我检查了其他语句,它们都是合法的.所以当我搜索并找到这些链接时:
我开始明白额外的分号意味着额外的空话.
但是当我在return声明后添加一个额外的分号时,我得到了编译时错误.我得出的结论是,该return声明被认为是执行流程中的最后一个声明,因此在声明之后添加一个额外的声明return是非法的.
这个代码也发生了同样的事情:
if(a == b)
System.out.println();;
else
System.out.println();
Run Code Online (Sandbox Code Playgroud)
在if语句内部System.out.println();;给出了编译时错误,因为编译器期望elseif或else.我是对的还是还有其他原因吗?
为什么在return语句之后不允许多个分号,何时允许所有其他语句?
只是因为当你有一个类似的陈述时
System.out.println();;
Run Code Online (Sandbox Code Playgroud)
这意味着你有两个语句,一个是,System.out.println();而另一个语句在第一个之后semi colon,它是空的并且允许但是你不能在语句之后有任何空语句或任何其他语句,return因为它永远不会执行,换句话说,它不到的语句,你不能有不可到达的语句在你的代码.
同样的事情也发生在这个代码中
if(a == b)
System.out.println();;
else
System.out.println();
Run Code Online (Sandbox Code Playgroud)
那是因为,当你有一个else语句时,语句就在它之前应该是if语句而不是上面代码片段中的情况,因为语句之前的else语句是empty statement不允许的.
如果您有if statement类似的括号
if(a == b) {
System.out.println();;
}
else
System.out.println();
Run Code Online (Sandbox Code Playgroud)
你会得到任何错误,因为现在是空的语句是内部的if block和声明之前else的if statement,而不是empty statement这是当你有后无括号的情况下if statement
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |