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

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

Patricia Arquette
Libérer: 2025-01-01 05:01:09
original
154 Les gens l'ont consulté

Are Arrays Passed by Value or by Reference in Java?

Passer des tableaux en Java : valeur par rapport à la référence

Contrairement aux types primitifs, les tableaux en Java ne sont ni des primitifs ni des objets. Cela soulève la question : sont-ils passés par valeur ou par référence en Java ?

Comprendre le passage de valeur et de référence

En Java, tout est passé par valeur. Cela signifie qu'une copie de la valeur réelle est stockée dans la variable de réception. Pour les primitives, comme les entiers ou les chaînes, cela duplique simplement la valeur. Cependant, pour les objets et les tableaux, c'est un peu plus complexe.

Passer des tableaux : référence uniquement

Bien que les tableaux ne soient pas de vrais objets, ils sont toujours traités comme des références. . Par conséquent, lorsqu’un tableau est transmis à une méthode, seule la référence au tableau est réellement transmise, et non le tableau lui-même. Cela implique que toute modification apportée au contenu du tableau sera reflétée dans le tableau d'origine.

Modification du contenu du tableau par rapport à la référence

Modification du tableau dans une méthode affecte le tableau d'origine en raison de la référence transmise. Cependant, modifier la référence elle-même, par exemple en l'attribuant à un nouveau tableau, ne modifiera pas la référence dans la méthode d'origine. En effet, la référence elle-même est une valeur transmise par valeur.

Exemple

L'exemple suivant illustre ce comportement :

public static void changeContent(int[] arr) {
    arr[0] = 10;  // Modifies the array's content
}

public static void changeRef(int[] arr) {
    arr = new int[2];  // Changes the reference
    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]);  // Prints 10 (content changed)

    changeRef(arr);
    System.out.println(arr[0]);  // Prints 10 (reference not changed)
}
Copier après la connexion

Dans ce cas, la méthode changeContent() modifie le contenu du tableau, affectant le tableau d'origine. Cependant, la méthode changeRef() modifie la référence elle-même, ce qui n'affecte pas le tableau d'origine.

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