File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Operator assignment freaks me out? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Operator assignment freaks me out?" Watch "Operator assignment freaks me out?" New topic

Operator assignment freaks me out?

Karthik Gurunathan

Joined: Jan 26, 2004
Posts: 19
What will the following class print ?
class InitTest
public static void main(String[] args)
int a = 1;
int b = 1;
a = a++;
b = b++ + b;
System.out.println(a+ " "+b);

How come the answer is 1,3 for the above code? I am not able to get my head around this stuff...please somebody explain. I thought it 2,3.
Nathaniel Stoddard
Ranch Hand

Joined: May 29, 2003
Posts: 1258
To compute a, the compiler first sees what a is (1), then does the post-increment (now a = 1), then finally set a to what it saw the first time (which was 1). So, a will be 1 once the "=" is done.
To compute b, you must remember that operands are computed left to right. So, the first operand will be 1, then b is incremented so be = 2. Then the second operand is retrieve (which is b, now 2). Then the "+" is done, using 2 and 1. So, be = 3.
Does that make sense?

Davy Kelly
Ranch Hand

Joined: Jan 12, 2004
Posts: 384
hey Karthik,
this is a great thread to read on the post increment operator.
post increment operator
but in quick terms.
int a = 1;
int b = 1;
a = a++; //a=a; then add 1 to a, so a=1; the last post increment did happen but did not get assigned to anything
b = b++ + b; //b=b++ + b; b=1 + 2 b=3 same here because it increments after it has done the last thing.
System.out.println(a+ " "+b);
[ April 19, 2004: Message edited by: Davy Kelly ]

How simple does it have to be???
Lionel Orellana
Ranch Hand

Joined: Mar 19, 2004
Posts: 87
Just remember x++ adds one to x but it actually returns x. ++x adds one to x and returns x + 1.
Bert Bates

Joined: Oct 14, 2002
Posts: 8898
Three guesses what my comment is?

Spot false dilemmas now, ask me how!
(If you're not on the edge, you're taking up too much room.)
I agree. Here's the link:
subject: Operator assignment freaks me out?
jQuery in Action, 3rd edition