Java 自体は値渡し呼び出しであり、アドレス値がオブジェクトに渡されます。アドレス値の再割り当ては再ポイントと同等であり、外側の層には影響しません。
そして、ここの Integer オブジェクトにも特別な特性があります。実際、実装は
class Integer{ final int value; //一旦赋值,就不能改变。 }
に似ている可能性があります。これは、呼び出し時に渡されるアドレス値は外側の層を変更できず、オブジェクト自体も変更できないことを示しています。結果として、この値は変更できません
解決策はたくさんあります
1. Java スタイルでは、単一の値の戻り値を使用します。 return i; assign i=foo(); 複数の値に配列またはオブジェクトを使用します。
2. 独自のカプセル化クラスを渡します。 class MutableInteger{ int value;}
3. 専用の AtomicInteger アトミック整数オブジェクトを渡します
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); }
渡した後に値を変更することもできます。
推奨解決策 1、回避してください