M.A.Murali
M.A.Murali

Reputation: 10158

Why does Java not show an error for double semicolon at the end of a statement?

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?

Upvotes: 15

Views: 17215

Answers (5)

Paŭlo Ebermann
Paŭlo Ebermann

Reputation: 74800

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.

Upvotes: 18

user529758
user529758

Reputation:

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.

Upvotes: 38

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726839

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.

Upvotes: 11

Luiggi Mendoza
Luiggi Mendoza

Reputation: 85789

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.

Upvotes: 1

Alexander Pavlov
Alexander Pavlov

Reputation: 32296

; by itself is an empty operator, so you effectively have two operators in the original case.

Upvotes: 1

Related Questions