I put an extra semicolon after the semicolon of System.out.println
:
System.out.println();;
Which was legal to Java compiler, so I checked for other statements and they were all legal too. So when I searched and found these links:
Why does Java not show an error for double semicolon at the end of a statement?
Compiler doesn't complain when I ended a line with two semicolons. Why?
When would you put a semicolon after a method closing brace?
Why does code with successive semi-colons compile?
Semicolon at end of 'if' statement
I came to understand that an extra semicolon means an extra empty statement.
But when I put an extra semicolon after a return
statement, I got a compile time error. I came to the conclusion that the return
statement is considered to be the last statement in the flow of execution, so putting an extra statement after the return
is illegal.
The same thing happens in this code too:
if(a == b)
System.out.println();;
else
System.out.println();
Inside the if
statement System.out.println();;
gives a compile time error, because the compiler is expecting elseif
or else
. Am I right or is is there some other reason?
Do not use a semicolon on the same line as an if , for , or while statement because it typically indicates programmer error and can result in unexpected behavior.
Return StatementsA semicolon is automatically inserted at the end of a return statement so make sure to keep the values you are returning on the same line (such as return 1 ) as the lines below return won't be executed!
If you place semicolon after a for loop then it is technically correct syntax. Because it is considered as an empty statement - that means nothing to execute. for(i=0;i<n;i++); An empty statement executed up to n times.
According to the Java language standard, the second semicolon is an empty statement. An empty statement does nothing.
Why multiple semicolon is not allowed after the return statement, when it is allowed for all other statement?
Simply because when you have a statement like
System.out.println();;
This means you have two statements, one is System.out.println();
and other statement is after the first semi colon
, it is empty and that's allowed BUT you can't have any empty statement or any other statement after the return
statement because it will never execute, in other words, its unreachable statement and you can't have unreachable statements in your code.
Same thing happens in this code too
if(a == b)
System.out.println();;
else
System.out.println();
that's because, when you have an else
statement, statement just before it should be if
statement which is not the case in above code snippet because statement just before else
statement is an empty statement
which is not allowed.
If you have parenthesis after the if statement
like
if(a == b) {
System.out.println();;
}
else
System.out.println();
you will get no errors because now empty statement is inside an if block
and the statement just before else
is if statement
and not the empty statement
which was the case when you had no parenthesis after if statement
Your code:
if (a == b)
System.out.println();;
else
System.out.println();
is equivalent to
if (a == b) System.out.println();
;
else System.out.println();
And you can't use an else
if the preceding statement is not an if
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With