Java では、パラメーターの受け渡しは本質的に値によって行われるため、メソッド内でプリミティブ変数を交換しようとすると課題が生じます。 。
<code class="java">void swap(int a, int b) { int temp = a; a = b; b = temp; }</code>
のような単純な実装では、メソッドの外側で元の変数が実際には変更されません。これに対処するために、2 つの型破りなアプローチを紹介します。
この手法では、メソッド呼び出しの操作の順序を利用してスワップが可能になります。
<code class="java">int swap(int a, int b) { // usage: y = swap(x, x=y); return a; }</code>
When swap(x, x=y) を呼び出すと、x への代入の前に x の値が swap に渡されます。したがって、 a が返されて y に代入されると、x と y の値が事実上交換されます。
より一般化されたソリューションの場合、汎用メソッドを定義できます。同じタイプの任意の数のオブジェクトを交換できます:
<code class="java"><T> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z); return args[0]; }</code>
このメソッドを z = swap(a, a=b, b=c) として呼び出すと、a、b、c の値が交換されます。 、最終的な値を z.
に代入します。以上がパラメータの受け渡しが値による場合、Java でプリミティブ変数を交換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。