问题
I accidentally wrote a java statement with two semicolons at the end. The java compiler does not show any error and it runs.
Code:
System.out.println("Length after delete the text is "+name.length());;
For learning purposes I tried adding different characters after the semicolon, and the java compiler has shown the compile time error as Syntax error on token ")", delete this token.
This statement:
System.out.println("Length after delete the text is "+name.length());)
Why does java treat the semicolon and other characters as different?
回答1:
Because a double semicolon is not treated as a double semicolon but as a semicolon plus an empty statement. And an empty statement, which does nothing, is not an error.
回答2:
As told by other answers, usually the second semicolon is interpreted as an empty statement, which is permissible where ever a statement is permissible.
Actually, there are cases where a double semicolon does produce an error:
public int method() {
return 1;;
}
When the compiler determines that a location is not reachable (and this is defined exactly in the JLS, but includes the locations directly after a return
, break
, continue
and throw
), no statement is allowed there, not even an empty one.
回答3:
According to the Java language standard, the second semicolon is an empty statement.
An empty statement does nothing.
EmptyStatement:
;
Execution of an empty statement always completes normally.
回答4:
;
by itself is an empty operator, so you effectively have two operators in the original case.
回答5:
The semicolon ends the sentence.
System.out.println("Length after delete the text is "+name.length());;
The second semicolon means the sentence is empty.
System.out.println("Length after delete the text is "+name.length());)
Is wrong because you're trying to finish an uncompleted sentence.
回答6:
Because it is not error? Why you are asking about java? This is in most languages with similar syntax...
来源:https://stackoverflow.com/questions/9546455/why-does-java-not-show-an-error-for-double-semicolon-at-the-end-of-a-statement