为什么Java在语句末尾不显示双分号错误?
我不小心写了一个java语句,结尾有两个分号。java编译器不会显示任何错误,并且会运行 代码: 出于学习目的,我尝试在分号后添加不同的字符,java编译器将编译时错误显示为“标记上的语法错误”)”,删除此标记 本声明:为什么Java在语句末尾不显示双分号错误?,java,java-compiler-api,Java,Java Compiler Api,我不小心写了一个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将分号和其他字符视为不同的?因为双分号不被视为双分号,而是被视为分号加空语句。空语句不做任何操作,也不是错误。
本身是一个空运算符,因此在原来的情况下实际上有两个运算符。分号结束句子
System.out.println("Length after delete the text is "+name.length());;
第二个分号表示句子是空的
System.out.println("Length after delete the text is "+name.length());)
是错误的,因为您试图完成一个未完成的句子。根据Java语言标准,第二个分号是一个
System.out.println("Length after delete the text is "+name.length());;
空语句不起任何作用
空语句的执行始终正常完成
正如其他答案所述,通常第二个分号被解释为空语句,这在任何允许语句的地方都是允许的 实际上,在某些情况下,双分号确实会产生错误:
public int method() {
return 1;;
}
当编译器确定某个位置不可访问时(这在JLS中定义得很准确,但包括直接在
返回
、中断
、继续
和抛出
)之后的位置,那里不允许有任何语句,甚至不允许有空语句。+1,确切地说,这与编写{}{}{{}(我指的是大括号)
在您的代码中的任何地方。谢谢我现在清除了。我想知道一些相关的问题,比如您的答案,我们使用分号来结束语句,但我不知道第二个分号是空运算符。实际上,它是一个空语句。Java中没有空表达式。很抱歉没有使用确切的术语。更正。否您可以要求eclipse标记带有警告的空语句。谢谢,我现在清除了。我想知道一些相关的问题,如您的回答,即我们使用分号结束语句,但我不知道第二个分号是空运算符。另一个示例可能是抛出新异常(“xyz”);
public int method() {
return 1;;
}