Bonsoir,
Comme on sait tous que le passage de paramètres en JAVA se fait par valeur.
Le cas des paramètres primitifs est évident, mais j'ai une question concernant le type évolué (tel que String):
En fait, j'ai le code suivant:
D'après mon interprétation, normalement la référence de la variable ch est copié dans une variable ch2 (dans une zone locale à m1), du coup les deux variables ch & ch2 pointent sur le même objet, mais lorsque j'essaie de modifier l'objet pointé par ch2 (qui est censé être le même pointé par ch) à travers cette instruction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class PassageParam { public static void main(String[] args) { String ch="Old fashion!"; m1(ch); System.out.println("La valeur de ch est: "+ch); } public static void m1(String ch2){ ch2="New look!"; System.out.println(ch2); } }
Je remarque que l'affichage dans la méthode main garde toujours la valeur "Old fashion"!!!ch2="New look!";
Comment est-ce possible? et comment je veut modifier l'objet pointée par les 2 variables!
NB: Je ne sais pas si je suis en train de modifier l'objet pointée par les 2 variables ch & ch2 à travers cette instruction
ou bien c'est juste que je suis en train d'affecter un nouveau objet à ch2!ch2="New look!";
J'espère que j'ai bien expliqué mon interrogation!
Merci d'avance pour votre réponse
Partager