JLS myths
~ if-then-else statement ~
HASUNUMA Kenji
k.hasunuma@coppermine.jp
GlassFish Users Group Japan
Slide 2
Slide 2 text
if-else statement
if ( someObject.eval() )
if ( otherObject.eval() )
func1();
else
func2();
assume that someObject.eval() is false.
which is run, func1 or func2?
Slide 3
Slide 3 text
if-else statement
if ( someObject.eval() )
if ( otherObject.eval() )
func1();
else
func2();
assume that someObject.eval() is false.
Neither func1 nor func2 is run.
Slide 4
Slide 4 text
if-else statement
if ( someObject.eval() )
if ( otherObject.eval() )
func1();
else
func2();
It's if-else's short-circuit.
Don't be misled by source code format!
Slide 5
Slide 5 text
From JLS (Java SE 8)
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf
else Statement
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf
else StatementNoShortIf
if-else statement (fixed)
if ( someObject.eval() ) {
if ( otherObject.eval() )
func1();
} else
func2();
assume that someObject.eval() is false.
which is run, func1 or func2?
Slide 9
Slide 9 text
if-else statement (fixed)
if ( someObject.eval() ) {
if ( otherObject.eval() )
func1();
} else
func2();
func2 is run!
because it use block as statement in outer
if statement
Slide 10
Slide 10 text
JLS myths
~ If-then-else statement ~
HASUNUMA Kenji
k.hasunuma@coppermine.jp
GlassFish Users Group Japan