Maison > Java > javaDidacticiel > Les tableaux Java sont-ils transmis par valeur ou par référence ?

Les tableaux Java sont-ils transmis par valeur ou par référence ?

Barbara Streisand
Libérer: 2024-12-16 19:02:12
original
886 Les gens l'ont consulté

Are Java Arrays Passed by Value or by Reference?

Comprendre le passage de valeurs et de références dans les tableaux Java

En Java, les concepts de « passage par valeur » et de « passage par référence » sont fréquemment discutés. Cet article vise à préciser si les tableaux sont transmis par valeur ou par référence.

Contrairement à la croyance populaire, les tableaux en Java ne sont pas considérés comme des types primitifs, ni comme des objets. Dès lors, la question se pose : Comment les tableaux sont-ils gérés lors du passage ?

La réponse est sans équivoque : Tout en Java est passé par valeur. Lorsqu'un tableau est passé en argument à une autre méthode, ce qui est réellement transmis est la référence à ce tableau. Ceci est analogue à la façon dont les références d'objet sont transmises par valeur.

Toute modification apportée au contenu d'un tableau via la référence transmise affectera par la suite le tableau d'origine. Cependant, modifier la référence elle-même pour pointer vers un tableau différent n'aura aucun impact sur la référence existante dans la méthode d'origine.

Pour illustrer ce concept, considérons l'exemple suivant :

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..
}
Copier après la connexion

Dans cet exemple, lorsque arr est passé à changeContent, le contenu de arr est modifié (c'est-à-dire que arr[0] reçoit la valeur 10). Ce changement affecte la variable arr d'origine dans main. Cependant, lorsque arr est passé à changeRef, la référence elle-même est modifiée en lui attribuant un nouveau tableau. Par conséquent, ce changement n'affecte pas la variable arr d'origine dans main.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal