see also operators
■ Multiple assignments, which run from right to left, are OK. i.e.
int x = 2;
a = b = c = d = x/2; Here a, b, c and d all become 1;
■ Multiple assignments are always evaluated from left to right, but with all variables taking on the end (right-hand) value. i.e.
In myarray[ a + d ] = a = b = c = d = n/2; due to the left-to-right evaluation order, the original values of the variables [ a + d ] would be used for the initial array indexing. They wouldn't be changed by the statement until later, after they were used to locate the array element myarray[ a + d ].
■ Since conditional operators have higher precedence than assignment operators, the following mix works: if ( boolean = int == int ) i.e.
boolean b = false;
int x = 2;
int y = 2;
if ( b = x == y ) returns true while assigning true to b.
■ Assigning something using one equals sign, in an otherwise-boolean-looking expression which should have two = = signs, just returns the actual result of the assignment. It doesn't return a true boolean result. i.e.
String a ="A";
String b = "B";
System.out.print( a = b ); prints B but
System.out.print( a == b ); will print false.
■ Direct primitive boolean variable assignments can be made using the single equals sign ( = ).
They make the assignment and then they always return the right hand boolean value. i.e.
( anybooleantrue = anybooleantrue ) always returns true
( anybooleanfalse = anybooleanfalse ) always returns false
( anybooleantrue = anybooleanfalse ) always returns false
( anybooleanfalse = anybooleantrue ) always returns true
( anybooleantrue = true ) always returns true
( anybooleantrue = false ) always returns false
( anybooleanfalse = true ) always returns true
( anybooleanfalse = false ) always returns false
■ You cannot use assignment against the final primitive values true and false themselves. i.e.
( true = true ) or ( true = anybooleanfalse ) will not compile.