当我使用eclipse ID时,我突然发现我在变量声明中加了双分号。
以下是我的陈述
double defaultValue = 0.0;;
我在这里感到困惑。我期望上面的语句抛出一个异常,但我错误的上面的语句运行没有任何错误。
为什么双分号没有显示任何错误?
答案 0 :(得分:5)
这是一个空洞的陈述,就是这样。它完全合法,但通常没用。它在section 14.6 of the JLS中指定:
空语句什么都不做。
EmptyStatement:
;空语句的执行总是正常完成。
几乎我唯一一次实际看到它使用的是给一个空体,例如。
while (somethingWithSideEffects())
;
我个人更喜欢在这种情况下使用大括号(或者改变代码以不以这种方式使用副作用),但这是个人偏好的问题。
答案 1 :(得分:2)
您期望什么样的例外?
double defaultValue = 0.0;;
只是double
的声明defaultValue
,其值为0.0
,后跟空语句。
您可以根据需要添加任意数量的分号。他们在这种情况下什么都不做
double defaultValue = 0.0;;;;;;;;;;;;;;
只是为了术语:没有异常 - 如果有任何东西会有编译警告或错误。语法错误不会在运行时发生,并且可能会抛出错误,编译器会尽早捕获这些错误。
答案 2 :(得分:1)
当您执行;
您的代码等同于
double defaultValue = 0.0; // valid statement
; // an empty statement
答案 3 :(得分:1)
Double semilcolon并非违法。它只是一个空代码行。没有错误抛出。
如果你想(从JLS),你甚至可以把它们放在一个类声明之后:
额外“;”出现在编译单元中类型声明级别的标记没有 影响编译单元的含义。 Java中允许使用杂散分号 编程语言仅仅是对习惯于放置的C ++程序员的让步 “;”在课堂宣言之后。它们不应该用在新的Java代码中。
答案 4 :(得分:0)
因为编译器将其视为空语句
;
应该是表示结束语句的分隔符。
while(true);;;;;// compiles and runs fine but will crash your pc
答案 5 :(得分:0)
double defaultValue = 0.0; // Correct Statement
; // Called as a Empty
这就是编译器Desen没有给出任何错误的原因。乐意帮助