質問: replaceSpaces(s1); System.out.println(s1); System.out.println(s2); } public static String replaceSpaces(String s) { return s.replaceAll(" ", a); } ``` 参照渡し(参照の値渡し)だとs1が編集されるはずですから、s1を表示すると、aabacとなるはずですが、そうはなりません。 これが値渡しのように振る舞う例です。
回答: > > String型はメソッドの引数となる時、参照型にも関わらず、参照渡しではなく値渡しのように振る舞いますね。 > > > いえ、ただの「参照の値渡し」で、**他のオブジェクトと何も変わらない**ものです。`String`は、一度生成してしまえば中身を変えることが不可能だというだけです(もちろん、引数で渡さない場面でも、文字列を入れ替えるには**別の`String`のインスタンスに置き換える**しか手段がありません)。