Java Reference
In-Depth Information
15.23. Conditional-And Operator
&&
only if the value of its left-hand operand is
true
.
ConditionalAndExpression:
InclusiveOrExpression
ConditionalAndExpression
&&
InclusiveOrExpression
The conditional-and operator is syntactically left-associative (it groups left-to-right).
The conditional-and operator is fully associative with respect to both side effects and result
value. That is, for any expressions
a
,
b
, and
c
, evaluation of the expression
((
a
) && (
b
)) &&
(
c
)
produces the same result, with the same side effects occurring in the same order, as eval-
uation of the expression
(
a
) && ((
b
) && (
c
))
.
Each operand of the conditional-and operator must be of type
boolean
or
Boolean
, or a
compile-time error occurs.
The type of a conditional-and expression is always
boolean
.
At run time, the left-hand operand expression is evaluated first; if the result has type
Boolean
, it is subjected to unboxing conversion (§
5.1.8
).
If the resulting value is
false
, the value of the conditional-and expression is
false
and the
right-hand operand expression is not evaluated.
If the value of the left-hand operand is
true
, then the right-hand expression is evaluated; if
value becomes the value of the conditional-and expression.
Thus,
&&
computes the same result as
&
on
boolean
operands. It differs only in that the right-
hand operand expression is evaluated conditionally rather than always.
15.24. Conditional-Or Operator
||
and only if the value of its left-hand operand is
false
.
ConditionalOrExpression:
ConditionalAndExpression
ConditionalOrExpression
||
ConditionalAndExpression