ホームページ >Java >&#&チュートリアル >Java 配列: 値渡しか参照渡し?

Java 配列: 値渡しか参照渡し?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-29 08:03:14590ブラウズ

Java Arrays: Pass by Value or Pass by Reference?

Java 配列: 値または参照の受け渡し?

Java の配列は、プリミティブ型でも本格的なオブジェクトでもない特別なステータスを保持します。この独特の性質により、Java 配列は値によって渡されるのか、それとも参照によって渡されるのかという疑問が生じます。

Java のすべてのものは値によって渡されます。 これには配列も含まれます。配列をメソッドに渡すとき、実際に渡されるのは、配列自体ではなく、その配列への参照です。

したがって、その参照を通じて配列の内容に加えられた変更は、元の配列に影響します。 。ただし、新しい配列を指すように参照を変更しても、元のメソッドに保持されている参照には影響しません。

次の Java スニペットを考えてみましょう。

public class ArrayPassingDemo {

    public static void changeContent(int[] arr) {
        arr[0] = 10; // Changes the content of the array in main()
    }

    public static void changeRef(int[] arr) {
        arr = new int[2]; // Does 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 (since the reference change isn't reflected)
    }
}

この例では、

  • changeContent は配列の内容を変更し、それが main().
  • changeRef に反映されます。配列参照を変更しようとしますが、元の参照が main() 内で影響を受けないため、失敗します。

この動作は、受け渡し操作に参照が含まれているにもかかわらず、Java の配列が値によって渡されることを強調しています。

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

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