| Author |
Wrapper instances question
|
patrick avery
Ranch Hand
Joined: Sep 12, 2008
Posts: 46
|
|
This one from Inquisition (SCJP 5 quiz by Mark DeChamps) confuses me: The answer is 5 but my incorrect reasoning led me to say 6... It looks like Integer y=x; creates a 2nd object, whereas I interpreted it as assigning y to the same object that x points to. I.e. in the code below why does Integer y=x; create a new object while AClass m2 = m1; just points m2 to the same object as m1?
|
SCJA 96%
SCJP 6 88%
skipping SCJD to work on passing SCWCD
|
 |
Henry Wong
author
Sheriff
Joined: Sep 28, 2004
Posts: 16680
|
|
The answer is 5 but my incorrect reasoning led me to say 6... It looks like Integer y=x; creates a 2nd object, whereas I interpreted it as assigning y to the same object that x points to.
Your reasoning for this line is actually correct. When you assign a reference to another reference, it doesn't create a new object. It's the next line that is the issue. Integer objects are immutable, so when you do y++ on an Integer object, the value must be unboxed, incremented, and reboxed. It is this boxing that changes the reference to another Integer object. Henry [ December 09, 2008: Message edited by: Henry Wong ]
|
Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
|
 |
patrick avery
Ranch Hand
Joined: Sep 12, 2008
Posts: 46
|
|
Thanks, Henry!! That makes perfect sense to me now.  [ December 09, 2008: Message edited by: patrick avery ]
|
 |
 |
|
|
subject: Wrapper instances question
|
|
|