Java関数のパラメーターの受け渡しについては、Javaでは値のみが渡されます。
int、double型のように、通常で理解しやすいように、関数に渡される値は値でなければなりません。
しかし、Javaオブジェクトを渡す場合、渡されるものが値であることをどのように理解しますか?
実際には、Javaオブジェクトの関数パラメーターは参照によって渡されます。これは、実際にはオブジェクトが配置されているメモリアドレスです。つまり、オブジェクトが配置されているメモリアドレスを一時変数にコピーして、関数を渡します。
したがって、関数内では、この参照に基づいてオブジェクトのさまざまなメソッドを呼び出すことができます。
ただし、この参照を変更しても、元のオブジェクトにはまったく影響しません。
例えば:
public class Main {
public static void main(String[] args) {
String a="aaa";
changTest(a);
System.out.println(a);
}
static void changTest(String s){
s="haha";
}
}
changTest関数で文字列の内容を変更できると思いますか?
動作してはならないため、出力aの内容は「aaa」である必要があります。
changeTest関数が呼び出されると、値が関数に渡されるため、つまり、Stringオブジェクトのアドレスがsに渡されるためです。
次に、changTest関数内で、sは新しいオブジェクト「haha」を指します。
ただし、このプロセスは元のオブジェクトには影響しません。
上記。