although envoking methods on the Object does effect the variable
It's perhaps a nitpick, but it would be more accurate to say that invoking methods on a variable affects the state of the object referenced by that variable's value. Invoking methods never changes the variable itself: that is to say its value remains the same.
A commonly held wrong end of the stick is to think of objects as the values of variables. But they're not: the values of variables are references
(or pointers) to objects. An object might change its state while something pointing (or referring) to it does not change.