casacaded assignment : Java Glossary

go to home page C words local find full screen, hide local find menu Google search web for more information on this topic jump to foot of page translate this page with Babelfish 2008-04-12 by Roedy Green ©1996-2009 Canadian Mind Products
index page for letter ⇒ punctuation 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (all)
cascaded assignment
In Java it is possible to cascade, aka chain assignment operators, but it is in generally considered poor form since the code often surprises the average programmer with its effects. Consider the following correct code to swap a and b without using an intermediate temporary:
int a=4;
int b=5;
a ^= b; // a=1, b=5
b ^= a; // a=1, b=4
a ^= b; // a=5, b=4
You might think you could collapse that program like this, as you can in some C++ compilers. It may not be legitimate C++, but some compilers allow it. However, in Java it does not work. You just get a=0.
int a=4;
int b=5;
a ^= b ^= a ^= b;
Even adding parentheses does not help:
int a=4;
int b=5;
a ^= ( b ^= ( a ^= b ) );
As a general rule, avoid cascading any of the Java combo assign/compute operators such as ^= += -= *= /= %= &= |= <<= >>= >>>= or =, especially when you use the same variable both on the left and right of an assignment operator.

CMP homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.62] Spread the Net
You are visitor number 11.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/jgloss/cascadedassignment.html J:\mindprod\jgloss\cascadedassignment.html