The equality operators are syntactically left-associative (they group left-to-right),
but this fact is essentially never useful; for example, a==b==c
parses as
(a==b)==c
. The result type of a==b
is always boolean
, and c
must therefore be
of type boolean
or a compile-time error occurs. Thus, a==b==c
does not test to
see whether a
, b
, and c
are all equal.
EqualityExpression:
RelationalExpression
EqualityExpression==
RelationalExpression
EqualityExpression!=
RelationalExpression
The == (equal to) and the != (not equal to) operators are analogous to the relational operators except for their lower precedence. Thus, a<b==c<d
is true
whenever a<b
and c<d
have the same truth value.
The equality operators may be used to compare two operands of numeric type, or two operands of type boolean
, or two operands that are each of either reference type or the null type. All other cases result in a compile-time error. The type of an equality expression is always boolean
.
In all cases, a!=b
produces the same result as !(a==b)
. The equality operators are commutative if the operand expressions have no side effects.