ホームページ > Java > &#&チュートリアル > Java の配列は値渡しですか、それとも参照渡しですか?

Java の配列は値渡しですか、それとも参照渡しですか?

Patricia Arquette
リリース: 2024-12-17 05:44:25
オリジナル
956 人が閲覧しました

Is Java's Array Passing by Value or by Reference?

Java での値と参照の受け渡しについて: 配列のケーススタディ

Java では、値渡しまたは参照渡しの概念は次のとおりです。重要なトピック。データ型が異なれば、このプロセス中の動作も異なります。プリミティブは値によって渡されますが、非プリミティブではあるがオブジェクトではない配列は、独特の状況を示します。

配列は値によって渡されるのか、参照によって渡されるのか?

本質的に、Java のすべては値によって渡されます。オブジェクトである配列はこの概念に従い、配列への参照は値によって渡されます。オブジェクト参照を渡すのと同様に、配列参照はコピーです。

配列の値の受け渡しの影響

この値の受け渡しには次のような特定の意味があります。

  • 渡された参照を介して配列の内容を変更すると、元の内容が変更されますarray.
  • 参照自体を変更しても (新しい配列に割り当てても)、元のメソッドの元の参照には影響しません。

サンプル デモンストレーション

次の Java コードを考えてみましょう:

public static void changeContent(int[] arr) {

    // If we change the contnet 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[0] 値は 10 のままになります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート