メソッドにおいて、引数を渡す仕組みはどのようになっているのでしょうか。
String型はメソッドの引数となる時、参照型にも関わらず、参照渡しではなく値渡しのように振る舞いますね。
ということは、防御的コピーを施した実装では参照ではなく、(ゲッターメソッド等が呼び出され)、その際生成したインスタンスがかえされるのということでよろしいのでしょうか。
回答お願いします。
補足です。
Java
1public static void main(String[] args) { 2 String s1 = "a b c"; 3 System.out.println(s1); 4 String s2 = replaceSpaces(s1); 5 System.out.println(s1); 6 System.out.println(s2); 7 8} 9 10public static String replaceSpaces(String s) { 11 return s.replaceAll(" ", a); 12 13}
参照渡し(参照の値渡し)だとs1が編集されるはずですから、s1を表示すると、aabacとなるはずですが、そうはなりません。
これが値渡しのように振る舞う例です。
「String型はメソッドの引数となる時、参照型にも関わらず、参照渡しではなく値渡しのように振る舞いますね。」そうだと感じたコードを書いてみてください。
回答2件
あなたの回答
tips
プレビュー