Bonsoir,

J'avais cru comprendre que les objets étaient passés par référence en Java, or avec le code suivant, on s'attend bien à ce que l'objet str soit modifié dans le main :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
	public static void main(String[] args) {
		String str = new String("ma_string");
		System.out.println("str is: " + str);
		chgString(str);
		System.out.println("str modified is: " + str);
	}
 
	public static void chgString(String string) {
		System.out.println("str to modify in chgString() method is: " + string);
		string = new String("string_modifiee");
		System.out.println("str modified in chgString() method is: " + string);
	}
Mais le résultat est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 java -jar test.jar 
str is: ma_string
str to modify in chgString() method is: ma_string
str modified in chgString() method is: string_modifiee
str modified is: ma_string
Quelqu'un pourrait-il m'expliquer ce qu'il se passe ?

Merci bien.