Bonjour,
J'ai un problème de compréhension, probablement de référent.
Dans le programme suivant (fichier joint ou ci-dessous), je crée un tableau d'entier qui j'initialise {1,2,3,4,5}. Puis je créer une deuxième tableau d'entier qui devient égal au premier.
1- Puis, en modifiant un élément du premier tableau, comment se fait-il que le deuxième en est également modifié?
2- Quel est le mécanisme de base que je n'ai pas compris?
3- Pourquoi en faisant la même chose avec des entiers, ça marche?
Grand merci pour vos réponses.
Le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class Test { static void affiche(int[] v){ for (int i=0; i<v.length; i++){ System.out.print(v[i]+" "); } System.out.println(); } public static int[] clone(int[] v){ int[] res = new int[v.length]; for (int i = 0; i<v.length; i++){ res[i]=v[i]; } return res; } public static void main(String[] args) { int[] v1 = {1,2,3,4,5}; int[] v2 = new int[5]; int[] v3 = new int[5]; int[] v4 = new int[5]; // Je copie v1 dans les vecteurs v2, v3 et v4 de différentes manières. v2 = v1; for (int i=0; i<v1.length; i++){ v3[i] = v1[i]; } v4 = clone(v1); v1[1] = 8; affiche(v1); // Affiche 1 8 3 4 5 affiche(v2); // Affiche 1 8 3 4 5 affiche(v3); // Affiche 1 2 3 4 5 affiche(v4); // Affiche 1 2 3 4 5 } }
Partager