boolean x = (a = m1(true)) ||( (b = m1(true)) && (c = m1(false)));
see with a short circuit operator if the first one is true (a = m1(true)) then it wont evaluate anything thats written beyond "||". so they will never be executed.
See this from K&B ***************** "The short-circuit feature of the && operator is so named because it doesn't waste its time on pointless evaluations. A short-circuit && evaluates the left side of the operation first (operand one), and if it resolves to false, the && operator doesn't bother looking at the right side of the expression (operand two) since the && operator already knows that the complete expression can't possibly be true."
"The | | operator is similar to the && operator, except that it evaluates to true if EITHER of the operands is true. If the first operand in an OR operation is true, the result will be true, so the short-circuit | | doesn't waste time looking at the right side of the equation. If the first operand is false, however, the short-circuit | | has to evaluate the second operand to see if the result of the OR operation will be true or false. "
"Things come to those who wait, but only the things left by those who hustle."