Junior
Comment les paramètres sont-ils passés dans les méthodes en Java?
sobes.tech IA
Réponse de l'IA
En Java, les paramètres dans les méthodes sont passés par valeur (pass-by-value).
Types primitifs :
- Une copie de la valeur primitive est transmise. Modifier le paramètre à l'intérieur de la méthode n'affecte pas la variable d'origine en dehors.
// Exemple pour un type primitif
public void changeValue(int x) {
x = x + 10; // La copie de x est modifiée à l'intérieur de la méthode
}
// Utilisation :
int original = 5;
changeValue(original);
// original reste égal à 5
Objets (types référencés) :
- Une copie de la référence à l'objet est transmise. Les deux références (l'originale et celle dans le paramètre) pointent vers le même objet en mémoire.
- Modifier l'état de l'objet (par exemple, appeler un setter, modifier des champs) via la référence passée dans la méthode affectera l'objet original.
- Réassigner le paramètre à un nouvel objet dans la méthode ne changera pas la référence originale en dehors.
// Exemple pour un type référencé (objet)
public class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public void modifyObject(MyObject obj) {
obj.setValue(100); // La modification affecte l'objet original
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // Le paramètre obj référence maintenant un nouvel objet, la référence originale ne change pas
}
// Utilisation :
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject a maintenant value = 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject référence toujours l'objet avec value = 50
En résumé : La valeur de la référence (son adresse) est transmise, pas l'objet lui-même. Cela permet de modifier l'objet via cette référence, mais pas de changer la référence originale pour qu'elle pointe vers un autre objet.