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 : 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);
    }
 
}
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
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
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