i believe the complete explanation goes as follows:
when you pass an object to a method you are passing a copy of the value of an original variable. this value contains a bit
pattern of a way to refer to an object. So: you can change the object's members by both: the argument in the method and the original variable, but not let the original value point to another object (you can let the argument refer to another object).
because strings are immutable, you can't change them and always a new string is created, so the argument refers to the new string, but the original variable still refers to the original string