2016-10-11 19 views
-2

文字列myFunction()を渡すとき、私は参照を渡します。なぜそれが終了するとき、参照は古いStringを指していますか?文字列への実際の参照を使用していませんか?文字列パラメータを関数に渡して変更する

import java.time.*; 

public class Main { 
    public static void main(String[] args) { 
     String a = "aaa"; 

     myFunction(a); 

     System.out.println(a); 
    } 

    private static void myFunction(String a) { 
     a = a + "111"; 
     System.out.println(a); 
    } 
} 
+0

メソッドで変更することができるため、例えば、StringBuilderを渡すか、メソッドから結果 'String'を返すことができます。 Java文字列は変更不可能です(定数、フリーズ)。 –

+0

質問に答えるために、参照はメソッドに渡されます。メソッド内で参照が変更された場合、新しい参照は戻されません。 –

答えて

0

可変範囲を調べます。変数のローカルコピーを作成し、それをmyFunction()で設定しています。ローカルコピーは、メソッドが実行する間だけ有効です。 Myfunction()が完了すると、 "a"の変更されたコピーにはアクセスできなくなります。

関連する問題