x = 3; y = 5 Enter PointDoubler x = 3; y = 5 x = 6; y = 10 Leave PointDoubler x = 6; y = 10
1. Parameter passing is always call by value.
2. If a method's parameter is a primitive data type, the method can change the value held in its parameter, but that change has no effect elsewhere.
3. However, if a method's parameter is a reference to an object, the method can use the reference to access the object and then change the instance variables of the object (unless they are private or in a different package).
4. If the parameter is a reference to an object, the invoked method can point the parameter at a different object, but this does not change the value of the reference held by the caller.
5. Of course, even if a method has a reference to an object, the object can be changed only if the object allows changes to be made.
Look at the definition of the MyPoint
class.
Think of a way to make MyPoint
objects immutable.