Meaningless Drivel is fun!
The moose likes Beginning Java and the fly likes Unclear about pass by reference Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Make it so: Java DB Connections & Transactions this week in the JDBC forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Unclear about pass by reference" Watch "Unclear about pass by reference" New topic

Unclear about pass by reference

Anand Kumar Loganathan

Joined: Jul 01, 2012
Posts: 3

The output is


But i was expecting it to be

20,20 as both rt and intt are object references. Is my understanding correct?.
Stephan van Hulst

Joined: Sep 20, 2010
Posts: 4272

No. Java is pass by value, so you can't do this.

You just passed an object reference by value. Pass by reference means passing variables by reference.

The mind is a strange and wonderful thing. I'm not sure that it will ever be able to figure itself out, everything else, maybe. From the atom to the universe, everything, except itself.
Ralph Cook
Ranch Hand

Joined: May 29, 2005
Posts: 479
The other thing that may not be obvious is that, within the method change(), the statement

assigns a value to an instance variable within the same rt object referenced by the caller . But the statement

creates a new Integer object to assign and assigns it to intt.

So the second statement changes the value of the object reference itself, and that does not affect the caller's reference.

You can read more about the creation of a new object for Integer by looking up "autoboxing".
Anand Kumar Loganathan

Joined: Jul 01, 2012
Posts: 3
Thanks Stephen and Ralph!!!
I agree. Here's the link:
subject: Unclear about pass by reference
It's not a secret anymore!