我不小心写了一个带有两个分号的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将分号和其他字符视为不同?
答案 0 :(得分:30)
因为双分号不是双分号,而是分号加空语句。并且一个没有任何作用的空语句不是错误。
答案 1 :(得分:15)
正如其他答案所述,通常第二个分号被解释为一个空的陈述,只要允许陈述,这是允许的。
实际上,有些情况下双分号确实会产生错误:
public int method() {
return 1;;
}
当编译器确定某个位置无法访问时(这在JLS中确切定义,但在return
,break
,continue
和{{之后直接包含位置1}}),那里不允许任何陈述,甚至不是空话。
答案 2 :(得分:10)
答案 3 :(得分:1)
;
本身就是一个空操作符,因此在原始情况下你实际上有两个操作符。
答案 4 :(得分:1)
分号结束了句子。
System.out.println("Length after delete the text is "+name.length());;
第二个分号表示句子为空。
System.out.println("Length after delete the text is "+name.length());)
错了,因为你试图完成一个未完成的句子。
答案 5 :(得分:0)
因为不是错误?你为什么要问java?这在大多数语言中都有类似的语法...