I read that Java does everything by call by value. I was wondering how to verify this fact? As far as I understand, in case of objects(not primitives) functions get its own copy of reference but points to same object. In that case, reference of that object in callee function and caller function should be different? How can I verify that? In other words, how to print the reference of the object.
System.out.println(object); //does this print reference i.e text following @
EDIT:
I understand that modifying object in callee function does change the value in caller function. I am interested in how to print the references of objects as in what property can I print on console that clearly shows me 2 different reference.
Java passes references by value. This means you’ll get a copy of the reference, so once you dereference that you’ll get to the same object in the heap as with the original reference.
But if Java was pass by reference:
The call to S.o.p. would print
nullif Java was pass by reference. But it isn’t, soxis unchanged and you’ll getHello.