Avatar ·

En Java, les paramètres sont-ils passés par référence ou par valeur ?

Bonjour à tous ! Je viens de commencer à étudier Java et je suis confronté à une incompréhension. Dans les livres, on écrit qu'en Java tout est passé par valeur, mais en pratique je vois quelque chose d'étrange. Voici un exemple. Quand je passe un objet (par exemple, une liste) à une méthode et que je le modifie à l'intérieur de la méthode, les changements persistent après la sortie de la méthode : ```java public class Test { public static void main(String[] args) { StringBuilder sb = new StringBuilder("Hello"); changeString(sb); System.out.println(sb); // Affiche : Hello World } public static void changeString(StringBuilder s) { s.append(" World"); } } ``` Ici, sb a été modifié. Je pensais que si une copie était passée, les changements devraient être locaux. Il s'avère que les objets sont passés par référence ? Mais si j'essaie d'assigner un nouvel objet à l'intérieur de la méthode, cela ne se reflète pas à l'extérieur : ```java public class Test { public static void main(String[] args) { StringBuilder sb = new StringBuilder("Hello");