Java では配列は値によって渡されますか?
Java はオブジェクト処理のアプローチが他のプログラミング言語とは異なります。整数や文字などのプリミティブ型とは異なり、Java の配列は独自に動作します。それらの動作を理解するには、オブジェクトの値渡しと参照渡しを区別することが重要です。
Java での値または参照による受け渡し
Java では、すべて値で渡されます。ただし、配列を渡す場合は、少し微妙になります。配列はプリミティブではありませんが、伝統的な意味でのオブジェクトでもありません。代わりに、それらは本質的にヒープ上のオブジェクトへの参照です。
配列がメソッドに渡されるとき、配列への参照は値によって渡されます。これは、実際の配列そのものではなく、参照のコピーが渡されることを意味します。
配列の動作への影響
配列への参照は値によって渡されるため、その参照を通じて配列の内容に加えられた変更は、元の配列に影響します。たとえば、配列要素の値がメソッド内で変更された場合、その変更は元の配列に反映されます。
ただし、別の配列を指すように参照自体を変更しても、メソッド内の元の参照は変更されません。方法。つまり、メソッドに渡された参照は、それが指す配列が変更されても同じままになります。
Clarity のコード例
説明するにはこの概念を理解するには、次のコードを考慮してください。
public static void changeContent(int[] arr) { // If we change the content of arr. arr[0] = 10; // Will change the content of array in main() } public static void changeRef(int[] arr) { // If we change the reference arr = new int[2]; // Will not change the array in main() 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]); // Will print 10.. changeRef(arr); System.out.println(arr[0]); // Will still print 10.. // Change the reference doesn't reflect change here.. }
この例では、changeContent メソッドは最初の要素を設定することによって配列の内容を変更します。変更はメインの元の配列に反映されます。これは、参照によって渡された配列の内容を変更すると、元の配列に影響を与えることを示しています。
一方、changeRef メソッドは、新しい配列を参照 arr に割り当てます。参照自体が値によって渡されないため、この変更は main の元の配列には反映されません。
以上がJavaでの配列の受け渡しは値渡しですか?それとも参照渡しですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。