Ceci est ma première classe Hello.javaPourquoi cette application Java affiche-t-elle "true"?
public class Hello {
String name = "";
}
Ceci est mon deuxième classe Test1.java
public class Test1 {
public static void main(String[] args) {
Hello h = new Hello();
Test1 t = new Test1();
t.build(h);
System.out.println(h.name);
}
void build(Hello h){
h.name = "me";
}
}
Quand je lance Test1.java, il imprime "moi". Je pense que je comprends, à cause du "transfert de référence".
Ceci est ma troisième classe Test2.java
public class Test2 {
public static void main(String[] args) {
Hello h = null;
Test2 t = new Test2();
t.build(h);
System.out.println(h == null);
}
void build(Hello h){
h = new Hello();
}
}
Quand je lance Test2.java, il imprime "true", pourquoi? Est-ce que le "transfert de référence" n'est plus? Je suis confus.
duplication possible de [Java passe par référence?] (Http://stackoverflow.com/questions/40480/is-java-pass-by-reference) – polygenelubricants
Java passe en valeur. Java transmet les références par valeur. – polygenelubricants
ces beaucoup de parenthèses? Programmeur Lisp Fromer? :-P –