2017-12-20 10 views
-3

私は、以下の質問に対する答えを友人に説明できるようにしようとしていますが、どうすればよいか分かりません。私は、プロセスメソッドが変更されず、答えはABCD(sは変更されていません)ですが、なぜそれがわからないのですか。それは文字列が不変であるからですか?私の友人はそれがCBAであるべきだと思っています。どんな助け?文字列を使ったコード説明

public void process(String s) 
{ 
    s = s.substring(2, 3) + s.substring(1, 2) + s.substring(0, 1); 
} 

(同じクラスのメソッドで)次のステートメントを実行した結果として表示されるものは何ですか?

String s = “ABCD”; 
process(s); 
System.out.println(s); 
+1

ちょうどそれを試してみてください、このような質問をしないでください他には役に立たないでください – Squareoot

+1

あなたの友人は万が一先生ではないでしょうか? – Nic3500

+0

文字列sの再割り当ては、関数プロセスに対してのみローカルです。 Javaはパラメータを値で渡すので、呼び出し元の参照は変更されません。 – StuartLC

答えて

0

変数sに新しい値を割り当てます。これはprocess()メソッドに渡されsの値を変更し、そうしない、それは価値だことにより、あなたはそれを呼び出している、そしてそれは

を変更しないので、たまたまプログラムプリント

ABCD 
0

ます以下のようなあなたの方法を書き換えることができます。

public static String process(String s) 
{ 
    return s.substring(2, 3) + s.substring(1, 2) + s.substring(0, 1); 
} 

、その後、あなたはこのようにそれを使用することができます:

String s = "ABCD"; 
s = process(s); 
System.out.println(s);