Javaはプリミティブを参照渡ししますか?

Mary-Kate Olsen
リリース: 2024-11-07 17:45:02
オリジナル
937 人が閲覧しました

Does Java Pass Primitives by Reference?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!