1 pièce(s) jointe(s)
Pourquoi la modif d'un int[] influence un autre int[]?
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:
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
}
} |