Java が値渡しするのを防ぐことはできません。それが言語のセマンティクスです。
やりたいことに応じて、何らかの方法でそれを回避できます。
return
渡されたパラメーターに基づいて新しい値を作成できます。
static String scramble(String s) {
return s.replaceAll("(.*) (.*)", "$2, $1");
}
// then later...
String s = "james bond";
s = scramble(s);
System.out.println(s); // prints "bond, james"
変更可能なものを渡すこともできます:
static void scramble(StringBuilder sb) {
int p = sb.indexOf(" ");
sb.append(", ").append(sb.substring(0, p)).delete(0, p+1);
}
// then later...
StringBuilder sb = new StringBuilder("james bond");
scramble(sb);
System.out.println(sb); // prints "bond, james"