Passage par valeur ou par adresse?

Résolu
hdiama Messages postés 215 Statut Membre -  
hdiama Messages postés 215 Statut Membre -
Bonjour,

public static String changer(String a){
a=a+"z";
return a;
}

public static void main(String[] args){
String a = "a";
System.out.println(changer(a));
System.out.println(a);
}

le résultat de a reste "a"... Pourquoi n'y a-t-il pas de changement?

A voir également:

4 réponses

JavaMafia.com
 
Je crois le résultat de ton code sera :
az
a
N'est-ce pas ?
1
hdiama Messages postés 215 Statut Membre 6
 
Oui, c'est ça
0
loupius Messages postés 789 Statut Membre 148
 
Je suppose qu'il s'agit de Java? En 'C', nous aurions dit:
return a;
Ta fonction retourne une valeur... que tu n'utilises pas !
Pour cela il faudrait écrire:
System.out.println(a = changer(a))
Est-ce vrai aussi en Java ? Je ne sais pas.
Bonne continuation.
0
hdiama Messages postés 215 Statut Membre 6
 
Oui, c'est bien en java.
Mais dans mon code principal, j'utilise bien une variable String mot, et c'est ce que je passe en paramètre... Pourquoi il ne fait pas les changements directement sur mot?
0
loupius Messages postés 789 Statut Membre 148
 
Tout simplement, parce qu'il s'agit sans doute d'un passage de paramètres par valeur.
0
hdiama Messages postés 215 Statut Membre 6
 
ok, merci loupius :)
0