Passage par valeur ou par adresse?

Résolu
hdiama Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   -  
hdiama Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   -
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 188 Date d'inscription   Statut Membre Dernière intervention   6
 
Oui, c'est ça
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   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 188 Date d'inscription   Statut Membre Dernière intervention   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 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Tout simplement, parce qu'il s'agit sans doute d'un passage de paramètres par valeur.
0
hdiama Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   6
 
ok, merci loupius :)
0