Javaメソッドのパラメータを渡す2つの方法

little bottle
リリース: 2019-04-08 14:56:18
転載
6162 人が閲覧しました

#Java でメソッド パラメータを渡すには、値渡しと参照渡しの 2 つの方法があります。

1. 値渡し

パラメータの型が int、long などの基本データ型 (基本データ型 8 種類) の場合、処理パラメータの受け渡し 値コピー メソッドの使用

#コード スニペット 1:

public class Test {

    public static void main(String[] args) {
        int a = 5;
        fun(a);
        System.out.println(a);// 输出结果为5
    }

    private static void fun(int a) {
        a += 1;
    }
}
ログイン後にコピー

#2. 参照渡し

パラメータの型は参照型であり、パラメータの転送処理はコピー参照方式を採用しています


コード スニペット 2:

public class Test {

    public static void main(String[] args) {
        A a = new A(5);
        fun(a);
        System.out.println(a.a);// 输出结果为6
    }

    private static void fun(A a) {
        a.a += 1;
    }

    static class A {
        public int a;

        public A(int a) {
            this.a = a;
        }
    }
}
ログイン後にコピー

#結論: 値渡しでは元の値は変更されませんが、参照渡しでは参照先オブジェクトの値が変更されます #次の状況を見てください:

コード スニペット 3:

public class Test {

    public static void main(String[] args) {
        Integer a = 5;
        fun(a);
        System.out.println(a);// 输出结果为5
    }

    private static void fun(Integer a) {
        a += 1;
    }

}
ログイン後にコピー
これは明らかに参照転送ですが、オブジェクトの値が変更されないのはなぜですか?

基本データ型カプセル化クラスのオートボクシング機能を実際に使用します。

Integer a = 5、コンパイル後は実際には Integer a = Integer.valueOf(5) になります。Integer のソース コードを見ると、元のオブジェクトの値は変更されず、その参照をポイントしているだけです。別のオブジェクトに。

##コード スニペット 3 のプロセスは、次の図で表すことができます。

## スタック フレームを直接変更する アドレス別のオブジェクトを指すため、元の値は変更されません。

【おすすめコース:

Java ビデオチュートリアル

以上がJavaメソッドのパラメータを渡す2つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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