Passage d'un object en argument
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:
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 :
Citation:
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 ?