Javaでは、すべてが値によって渡されることを私は知っています。ただし、オブジェクトの場合、渡されるのはオブジェクトへの参照の値です。これは、オブジェクトがパラメータを介して変更される場合があることを意味します。そのため、パラメータを変更しないでください。
しかし、次のコードでは、別のことが起こります。 s
に戻ってもinchangeIt()
は変わりませんmain()
:
public class TestClass {
static String str = "Hello World";
public static void changeIt( String s ) {
s = "Good bye world";
}
public static void main( String[] args ) {
changeIt( str );
System.out.println( str );
}
}
私は推測しています-そして確認をお願いします-あなたが言うときそれはと言うs = "something"
のと同じか同等String s = new String("something")
です。これがなぜs
変わらないのですか?終了すると破棄されるまったく新しいオブジェクトがローカルに割り当てられていますchangeIt()
か?