stringは使う側から見ると値型みたいに見える参照型

change(str);
の時点では "入ってない"の参照先が渡されてるけど
str = "入った"とした時点で
change()内のstrの参照先が変更されて新たに作られた"入った"を参照するようにされるから
参照元の引数にしたstrの方には影響が無い