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 :
ce qui me donne le résultat 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
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(){} }
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.x1 = 0 y1=0
x = vide
Essai =
Appel fonction
x1 = 100 y1=100
x = vide
Essai = modifié
Pourquoi ?
Partager