Java lui-même est un appel de transmission de valeur et la valeur de l'adresse est transmise à l'objet. La réattribution de la valeur de l'adresse équivaut à un repointage et n'affectera pas la couche externe.
Et l'objet Integer ici a également des caractéristiques spéciales. En fait, l'implémentation peut être similaire à
class Integer{ final int value; //一旦赋值,就不能改变。 }
Cela apparaît : la valeur d'adresse transmise lors de l'appel ne peut pas changer l'objet externe lui-même et ne peut pas être modifiée. Par conséquent, cette valeur ne peut pas être modifiée
Il existe de nombreuses solutions
1 Le style Java consiste à utiliser la valeur de retour pour une seule valeur. return i ; assigner i=foo(); utiliser des tableaux ou des objets pour plusieurs valeurs.
2. Réussissez votre propre cours d'encapsulation. class MutableInteger{ int value;}
3. Passer l'objet entier atomique AtomicInteger dédié
public static void main(String[] 参数) { AtomicInteger i=new AtomicInteger(40); i.intValue(); System.out.println(i); } public static void change(AtomicInteger i) { i.set(55); }
peut également modifier la valeur après le passage
Solution recommandée 1, essayez d'éviter