Java selbst ist ein Aufruf zur Wertübergabe, und der Adresswert wird an das Objekt übergeben. Das Neuzuweisen des Adresswerts entspricht einem Neuverweisen und hat keine Auswirkungen auf die äußere Schicht.
Und auch das Integer-Objekt weist hier besondere Eigenschaften auf. Tatsächlich ähnelt die Implementierung möglicherweise
class Integer{ final int value; //一旦赋值,就不能改变。 }
Dies zeigt sich: Der beim Aufruf übergebene Adresswert kann das äußere + Objekt selbst nicht ändern und kann sich auch nicht ändern. Daher kann dieser Wert nicht geändert werden
Es gibt viele Lösungen
1 Der Java-Stil besteht darin, den Rückgabewert für einen einzelnen Wert zu verwenden. return i; weise i=foo(); außerhalb zu; verwende Arrays oder Objekte für mehrere Werte.
2. Bestehen Sie Ihren eigenen Kapselungskurs. class MutableInteger{ int value;}
3. Durch Übergeben des dedizierten atomaren Integer-Objekts
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); }
kann sich der Wert auch nach der Übergabe ändern
Empfohlene Lösung 1, versuchen Sie,