この記事では、Java における値の受け渡しと参照の受け渡し (アドレスの受け渡し) の違いについて説明します (コード付き)。必要な方は参考にしていただければ幸いです。役立ちます。
値渡し (値渡し) とは、関数呼び出し時に実際のパラメータをコピーして関数に渡すことを意味します。これにより、関数内でパラメータが変更された場合に、それらが変更されます。実際のパラメータには影響しません。転送されるオブジェクトは、多くの場合、整数浮動小数点文字型などの基本的なデータ構造です。
public class PassByValueReference { //值传递 public static void main(String[] args) { int x = 9; pass(x); System.out.println(x); } private static void pass(int y) { System.out.println(y); y=0; } }以下は実行結果です: (整数 y の値の変更は整数 x の値に影響しません) 参照渡し
(参照渡し) は渡すことを指します関数呼び出し時の実際のパラメータ アドレス が関数に直接渡されるため、関数内のパラメータの変更は実際のパラメータに影響します。 (コミュニティに似ています) 転送されるオブジェクトは配列などのアドレスデータ構造であることが多いです。
public class PassByValueReference { //引用传递 public static void main(String[] args) { int [] x = {9}; System.out.println(x[0]); pass(x); System.out.println(x[0]); } public static void pass(int [] y) { y[0] = 0; } }以下は実行結果です: (配列 y の値の変更は配列 x の値にも影響します)
(値の転送と参照の転送は、コンピューターのデータ構造におけるスタックとヒープの知識を使用します)
さらに、Java の関数やメソッドの知識がまだない場合は、代入を使用するだけで理解できます: (演算結果は上記と同様です)public class PassByValueReference { //值传递(赋值非函方式) public static void main(String[] args) { int x = 9; System.out.println(x); y = x; y = 10; System.out.println(x); } }ここで、x と y は基本的なデータ型を割り当てた後、x の値が y に渡されます。これは、x 全体 (つまり、x アドレス) を y に渡すのではなく、コピーを作成することと同じです。
public class PassByValueReference { //引用传递(赋值非函方式) public static void main(String[] args) { int [] x = {1}; System.out.println(x[0]); int [] y = x; y[0] = 0; System.out.println(x[0]); } }ここで、x と y は配列です。今回のコードは単に x[0]=y[0] を設定するのではなく、x=y を直接設定します。これは等価です。 y[0] が変化すると、x[0] も変化します。 関連する推奨事項:
Javaの値の受け渡しと参照の受け渡しについて詳しく説明します
。
以上がJava での値渡しと参照渡しの違いの分析 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。