public class Change{
public void changeIt1(B temp)
{
temp.i=10;
}
public void changeIt1(B temp)
{
temp=new B();
temp.i=10;
}
public static void main(
String args[])
{
B obj1,obj2;
obj1=new B();
obj2=new B();
change c=new Change()
c.changeIt1(obj1);
c.changeIt2(obj2);
System.out.println("obj1.i="+obj1.i+" obj2.i="+obj2.i);
}
}
public class B{
public int i=5;
}
The out put of running class Change is
obj1.i=10 obj2.i=5
This is because temp in changIt1 and obj1 in main refers to the same object.
But temp in changeIt2 is reassigned a new objects reference. so temp in ChangeIt2 now donot refers the same object that is refered by obj2 in main. so object refered by obj2 is not changed inside ChangeIt2.
Please let me know if I am wrong.