ホームページ >Java >&#&チュートリアル >Java 配列は値によって渡されますか?それとも参照によって渡されますか?

Java 配列は値によって渡されますか?それとも参照によって渡されますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-16 19:02:12887ブラウズ

Are Java Arrays Passed by Value or by Reference?

Java 配列での値と参照の受け渡しについて

Java では、「値渡し」と「参照渡し」の概念が頻繁に議論されます。この記事は、配列が値で渡されるのか参照で渡されるのかを明らかにすることを目的としています。

一般的な考えに反して、Java の配列はプリミティブ型とみなされず、オブジェクトでもありません。したがって、受け渡し中に配列はどのように処理されるのですか?

という疑問が生じます。その答えは明白です。Java のすべては値によって渡されます。配列が引数として別のメソッドに渡される場合、実際に渡されるのはその配列への参照です。これは、オブジェクト参照が値によって渡される方法に似ています。

渡された参照を通じて配列の内容に加えられた変更は、その後、元の配列に影響します。ただし、別の配列を指すように参照自体を変更しても、元のメソッドの既存の参照には影響しません。

この概念を説明するために、次の例を考えてみましょう。

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..
}

この例では、arr がchangeContent に渡されると、arr の内容が変更されます (つまり、arr[0] に値 10 が割り当てられます)。この変更は、main の元の arr 変数に影響します。ただし、arr がchangeRef に渡されると、参照自体に新しい配列が割り当てられて変更されます。したがって、この変更は main の元の arr 変数には影響しません。

以上がJava 配列は値によって渡されますか?それとも参照によって渡されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。