为什么 Java 在语句末尾不显示双分号错误?

2022-09-03 08:23:55

我不小心写了一个java语句,末尾有两个分号。Java 编译器不显示任何错误,它会运行。

法典:

System.out.println("Length after delete the text is "+name.length());;

出于学习目的,我尝试在分号后添加不同的字符,并且java编译器已将编译时错误显示为标记“)”上的语法错误,删除此令牌

本声明:

System.out.println("Length after delete the text is "+name.length());)

为什么java将分号和其他字符视为不同?


答案 1

因为双分号不被视为双分号,而是被视为分号加空语句。空语句不执行任何操作,不是错误。


答案 2

正如其他答案所说,通常第二个分号被解释为空语句,这在允许任何语句的情况下都是允许的。

实际上,在某些情况下,双分号确实会产生错误:

public int method() {
   return 1;;
}

当编译器确定某个位置不可访问时(这在 JLS 中完全定义,但包括紧跟在 、 和 之后的位置),则不允许存在任何语句,即使是空语句也不允许。returnbreakcontinuethrow


推荐