Everything in
java is pass by value, so when you pass a reference into a function, you are getting a COPY of that reference (i.e. two references that point at the same thing).
In another(), v.i = 20 actually changes the original object. But when you say v = vh, you are making that reference point to something entirely different from what was passed in, so any modifications to that have no relationship with the v that object originally passed in.