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.. }
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!