Java のプリミティブの参照渡し
Java は、参照渡しを利用する C とは異なり、値渡しを採用しています。これにより、メソッド内でプリミティブ データ型 (int、float など) を変更しても、メソッド外の値に影響を与えないシナリオが作成される可能性があります。
次の Java コードを考えてみましょう:
public class XYZ { public static void main() { int toyNumber = 5; XYZ temp = new XYZ(); temp.play(toyNumber); System.out.println("Toy number in main " + toyNumber); } void play(int toyNumber) { System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); } }
このコードは次のように出力します。
Toy number in play 5 Toy number in play after increment 6 Toy number in main 5
toyNumber 変数は値によって渡されるため、play() メソッドの外では変更されません。
Java での参照渡しの代替案:
Java での C のプリミティブの参照渡しを模倣するには、いくつかのオプションが利用可能です。
1.パブリック メンバー変数:
toyNumber のパブリック メンバー変数を持つクラスを作成し、そのクラスへの参照を渡します。
class MyToy { public int toyNumber; }
void play(MyToy toy) { System.out.println("Toy number in play " + toy.toyNumber); toy.toyNumber++; System.out.println("Toy number in play after increment " + toy.toyNumber); }
2.戻り値:
参照渡しの代わりに、メソッドから変更された値を返します。
int play(int toyNumber) { System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); return toyNumber; }
main メソッドで、戻り値を使用して toyNumber を更新します。
3.クラス/静的変数:
play() メソッドと main() メソッドが同じクラスの一部である場合、toyNumber をクラス メンバー変数に変換します。
4. 1 つの要素の配列:
これはハックですが、単一要素の配列を渡し、その値を変更する必要があります。
void play(int[] toyNumber) { System.out.println("Toy number in play " + toyNumber[0]); toyNumber[0]++; System.out.println("Toy number in play after increment " + toyNumber[0]); }
以上がJavaはプリミティブを参照渡ししますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。