Java での配列の受け渡し: 値と参照
プリミティブ型とは異なり、Java の配列はプリミティブでもオブジェクトでもありません。ここで疑問が生じます: Java では値によって渡されるのか、それとも参照によって渡されるのでしょうか?
値と参照の受け渡しについて
Java では、すべてが値によって渡されます。これは、実際の値のコピーが受信変数に格納されることを意味します。整数や文字列などのプリミティブの場合、これは値を単純に複製します。ただし、オブジェクトと配列の場合は、もう少し複雑です。
配列の受け渡し: 参照のみ
配列は真のオブジェクトではありませんが、参照として扱われます。 。したがって、配列がメソッドに渡されるとき、実際には配列自体ではなく、配列への参照のみが渡されます。これは、配列の内容に加えられた変更が元の配列に反映されることを意味します。
配列の内容と参照の変更
メソッド内での配列の変更参照が渡されるため、元の配列には影響しません。ただし、新しい配列に割り当てるなど、参照自体を変更しても、元のメソッドの参照は変更されません。これは、参照自体が値によって渡される値であるためです。
例
次の例は、この動作を示しています。
public static void changeContent(int[] arr) { arr[0] = 10; // Modifies the array's content } public static void changeRef(int[] arr) { arr = new int[2]; // Changes the reference arr[0] = 15; } public static void main(String[] args) { int[] arr = new int[2]; arr[0] = 4; arr[1] = 5; changeContent(arr); System.out.println(arr[0]); // Prints 10 (content changed) changeRef(arr); System.out.println(arr[0]); // Prints 10 (reference not changed) }
この場合、changeContent() メソッドは配列の内容を変更し、元の配列に影響を与えます。ただし、changeRef() メソッドは参照自体を変更するため、元の配列には影響しません。
以上がJavaでは配列は値によって渡されますか?それとも参照によって渡されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。