Sobes.tech
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.