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 könnte es ähnlich sein
Kopieren Sie den Codecode wie folgt:
Klasse Integer{
final int value; // Einmal zugewiesen, kann es nicht mehr geändert werden.
}
Dies zeigt sich: Der beim Aufruf übergebene Adresswert kann die äußere Schicht nicht ändern + das Objekt selbst kann nicht geändert werden. 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. Klasse MutableInteger{ int value;}
3. Übergeben Sie das dedizierte atomare Ganzzahlobjekt AtomicInteger
Kopieren Sie den Codecode wie folgt:
public static void main(String[] Parameter) {
AtomicInteger i=new AtomicInteger(40);
i.intValue();
System.out.println(i);
}
public static void change(AtomicInteger i) {
i.set(55);
}
Sie können den Wert auch nach der Übergabe ändern.
Empfohlene Option 1, versuchen Sie zu vermeiden