ホームページ  >  記事  >  Java  >  パラメータの受け渡しが値による場合、Java でプリミティブ変数を交換するにはどうすればよいですか?

パラメータの受け渡しが値による場合、Java でプリミティブ変数を交換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 04:51:30427ブラウズ

How Can You Swap Primitive Variables in Java When Parameter Passing is by Value?

Java でのプリミティブ変数の交換: 値の受け渡しの克服

Java では、パラメーターの受け渡しは本質的に値によって行われるため、メソッド内でプリミティブ変数を交換しようとすると課題が生じます。 。

<code class="java">void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}</code>

のような単純な実装では、メソッドの外側で元の変数が実際には変更されません。これに対処するために、2 つの型破りなアプローチを紹介します。

Return-Assign パターン

この手法では、メソッド呼び出しの操作の順序を利用してスワップが可能になります。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。