为什么Java在语句结尾处不显示双分号错误?
我不小心写了一个带有两个分号的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将分号和其他字符视为不同?
因为双分号不被视为双分号,而是分号加空语句。 一个空的陈述,什么都不做,不是一个错误。
正如其他答案所述,通常第二个分号被解释为空语句,只有在允许声明的情况下才允许这样做。
实际上,有些情况下双分号确实会产生错误:
public int method() { return 1;; }
当编译器确定某个位置不可访问时(这在JLS中确切定义,但在return
, break
, continue
和throw
之后直接包含位置),那里不允许任何语句,甚至不允许空语句。
根据Java语言标准,第二个分号是一个空语句 。
空语句什么都不做。
EmptyStatement: ;
执行空语句总是正常完成。
;
它本身就是一个空运算符,所以你在原始情况下有效地拥有两个运算符。
分号结束了句子。
System.out.println("Length after delete the text is "+name.length());;
第二个分号表示句子是空的。
System.out.println("Length after delete the text is "+name.length());)
是错的,因为你试图完成一个未完成的句子。
因为这不是错误? 你为什么问java? 这在大多数语言中都有类似的语法…