Hi Ankith, Expression evaluation occurs from left to right. So first method1(true) is called. It returns true. next method2(false) is called. It returns false. now this two results are short circuit ANDed. and the result is false. But finally you are using & operation , this will evaluate both sides of the operand.So method3(true) will also be called.
shortcuts for logical AND only can take that shortcut if the left operand is false. Only then the result has to be false as well irrespective of what operands follow. If you don't use the shortcut, both will be evaluated in any case.
Example in your package prints: in 1 in 2 false in 1 (but no in 2) false ----- in 1 in 2 false in 1 in 2 <-- because of no shortcut false