Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Unclear about pass by reference

 
Anand Kumar Loganathan
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator


The output is

0,0
0,20

But i was expecting it to be


0,0
20,20 as both rt and intt are object references. Is my understanding correct?.
 
Stephan van Hulst
Bartender
Pie
Posts: 5568
53
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Ralph Cook
Ranch Hand
Posts: 479
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Stephen and Ralph!!!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic