Passage de paramètres en JAVA
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:
Code:
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);
}
} |
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
Citation:
ch2="New look!";
Je remarque que l'affichage dans la méthode main garde toujours la valeur "Old fashion"!!!
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
Citation:
ch2="New look!";
ou bien c'est juste que je suis en train d'affecter un nouveau objet à ch2!
J'espère que j'ai bien expliqué mon interrogation!
Merci d'avance pour votre réponse