Why doesn\'t func3 get executed in the program below? After func1, func2 doesn\'t need to get evaluated but for func3, shouldn\'t it?
if (func1() || func2()
Java uses Lazy evaluation.
Since Func1 always returns true, the entire expression MUST be true, so it shortcuts the rest of the expression.
true || (???)
and
false && (???)
will always shortcut.
To turn off shortcut evaluation, use | and & instead of || and &&
We can use this to good effect:
String s;
if (s != null && !s.equals("")) ...
Meaning that if s is null, we won't even have to try to call s.equals, and we won't end up throwing an NullPointerException
short answer: short-circuit evaluation
since func1() yelds true there is not need to continue evaluation since it is always true
If function 1 always returns true, then Java doesn't need to evaluate the rest of the expression to determine that the whole expression will be true.