Possible en double:
Is Java “pass-by-reference”?JAVA passe par valeur Vs passe par référence
Je suis en train de comprendre la différence entre les 2 programmes JAVA écrit ci-dessous:
public class Swapping {
public static void main(String[] args) {
IntWrap i = new IntWrap(10);
IntWrap j = new IntWrap(20);
swap(i, j);
System.out.println("i " + i.i + ", j " + j.i);
}
public static void swap(IntWrap i , IntWrap j){
int x = i.i;
i.i = j.i;
j.i = x;
System.out.println("i " + i.i + ", j " + j.i);
}
}
public class IntWrap {
int i;
public IntWrap(int i){
this.i = i;
}
}
Sortie:
i 20, j 10
i 20, j 10
et 2ème: -
Permutation public class {
public static void main(String[] args) {
Integer i = new Integer(10);
Integer j = new Integer(20);
swap(i, j);
System.out.println("i " + i + ", j " + j);
}
public static void swap(Integer i , Integer j){
Integer temp = new Integer(i);
i = j;
j = temp;
System.out.println("i " + i + ", j " + j);
}
}
Sortie:
i 20, j 10
i 10, j 20
Je ne suis pas en mesure de comprendre que je même si je passe Integer objet, il devrait être permuté dans le programme d'origine. Quelle différence cela a-t-il créé si j'ai écrit la classe wrapper sur le dessus alors que je ne fais que passer à nouveau l'objet ... Veuillez répondre avec des explications détaillées seulement, si vous en avez.
[Il n'y a pas de cuillère] (http://www.urbandictionary.com/define.php?term=there%20is%20no%20spoon) –
'entier I' n'est pas un objet. C'est une * référence * à un objet. Vous passez une référence par valeur. –