If I have a member variable such as this (declared in the body of a class)
private Dot[] dots=new Dot[numDots];
I loop through all members of this array, and:
1) Pass every Dot object to a function of another class, which:
2) Passes it to yet another function of a 3rd class, if some conditions are met
3) And the 3rd class changes some properties of the Dot object
then when this object is returned to the original/parent class, would those changes to its properties have retained? Or would it be treated like a local variable by the 2nd/3rd functions?
Yes, the changes to the properties are retained. Java is 100% pass-by-value, however, when you pass an object, the ‘value’ passed is truly a pointer to the object. Thus, when you change an object in a method, you’re changing the actual object passed in.
That is, if you have the following method, then the calling method will see the changes:
but if you do the following, then the calling method will not see the changes.
In the second example, the caller will not see any changes and will not see the newly created
Dotobject.