Bonjour à tous,

j'aurais besoin d'un petit éclaircissement au niveau du passage d'argument entre fonction.
Java passe les arguments par valeur , donc quand il sagit d'un objet il passe sa référence par valeur.
Ce qui veut dire que :

-Si je passe un type primitif , le modifie dans la fonction , il ne sera pas modifié là ou la fonction à été appelé.

-En revanche si je passe un objet, je le modifie dans la fonction , la valeur de la référence est modifié et donc l'objet initiale aussi juste ?

Pour confirmer celà j'ai fait ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Main {
	public static void main(String[] args) {
		Point point1 = new Point(0, 0);
		Object x = new String("vide");
		Essai essai = new Essai();
 
		System.out.println("x1 = "+point1.x+" y1="+point1.y);
		System.out.println("x = "+x);
		System.out.println("Essai = "+essai.nom);
		System.out.println("Appel fonction");
		test(point1,x,essai);
		System.out.println("x1 = "+point1.x+" y1="+point1.y);
		System.out.println("x = "+x);
		System.out.println("Essai = "+essai.nom);
	}
 
	public static void test(Point arg1, Object arg3,Essai arg4)
	{
		arg1.x = 100;
		arg1.y = 100;
		arg3 = "Test";
		arg4.nom = "modifié";
	}
 
}
 
class Essai
{
	public String nom = "";
	public Essai(){}
}
ce qui me donne le résultat suivant :
x1 = 0 y1=0
x = vide
Essai =

Appel fonction

x1 = 100 y1=100
x = vide
Essai = modifié
Donc l'objet Point est bien modifié , tout comme l'objet Essai par contre un type Object lui ne change pas tout comme un String.

Pourquoi ?