Maison > Java > javaDidacticiel > Le passage de tableaux en Java est-il par valeur ou par référence ?

Le passage de tableaux en Java est-il par valeur ou par référence ?

Patricia Arquette
Libérer: 2024-12-31 04:34:08
original
505 Les gens l'ont consulté

Is Array Passing in Java by Value or by Reference?

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

Java diffère des autres langages de programmation par son approche de la gestion des objets. Contrairement aux types primitifs tels que les entiers ou les caractères, les tableaux en Java se comportent de manière unique. Pour comprendre leur comportement, il est crucial de faire la distinction entre le passage d'objets par valeur et par référence.

Passage par valeur ou référence en Java

En Java, tout est passé par valeur. Cependant, lors du passage d'un tableau, c'est un peu plus nuancé. Les tableaux ne sont pas des primitifs, mais ils ne sont pas non plus des objets au sens traditionnel du terme. Au lieu de cela, ce sont essentiellement des références à un objet sur le tas.

Lorsqu'un tableau est passé à une méthode, la référence au tableau est passée par valeur. Cela signifie qu'une copie de la référence est transmise, et non le tableau lui-même.

Implications sur le comportement du tableau

Puisque la référence au tableau est transmise par valeur, toute modification apportée au contenu du tableau via cette référence affectera le tableau d'origine. Par exemple, si la valeur d'un élément de tableau est modifiée dans une méthode, la modification sera reflétée dans le tableau d'origine.

Cependant, modifier la référence elle-même pour pointer vers un tableau différent ne modifiera pas la référence d'origine dans le méthode. En d'autres termes, la référence qui a été transmise à la méthode reste la même, même si le tableau vers lequel elle pointe est modifié.

Exemple de code pour la clarté

Pour illustrer ce concept, considérons le code 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, la méthode changeContent modifie le contenu du tableau en définissant le premier élément à 10. Les changements sont reflétés dans le tableau d'origine dans main. Cela démontre que la modification du contenu d'un tableau passé par référence affecte le tableau d'origine.

D'autre part, la méthode changeRef attribue un nouveau tableau à l'arr de référence. Ce changement n'est pas reflété dans le tableau d'origine dans main car la référence elle-même n'est pas transmise par valeur.

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