ホームページ  >  記事  >  Java  >  Javaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)

Javaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)

(*-*)浩
(*-*)浩転載
2019-08-17 16:30:562870ブラウズ

参照変数の属性値を変更できるのはなぜですか?以下の答えをご覧ください。

Javaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)

#java のデータ型

Java のデータ型は、基本型と参照型の 2 つのカテゴリに分類されます。これに対応して、変数も基本型と参照型の 2 つの型に分類されます。

基本型変数は元の値を保存します。つまり、それが表す値は値そのものです。

参照型変数によって保存される値は参照値であり、「参照」 value" はメモリ空間のアドレスを指し、オブジェクト自体ではなく、オブジェクトへの参照を表します。オブジェクト自体は、参照値で表されるアドレスに格納されます。

基本的なタイプには、byte、short、int、long、char、float、double、Boolean、returnAddress が含まれます。

参照型には、クラス、インターフェイス型、配列が含まれます。

Java には値の転送しかありません

日常のコーディングでは、次のような現象がよく見られます:

1. 基本的な型パラメータの場合、メソッド内 本体内でパラメータを再割り当てしても、元の変数の値は変更されません。

2. 参照型パラメータの場合、メソッド本体内のパラメータへの参照を再割り当てしても、元の変数が保持する参照は変更されません。

3. パラメーターは、元の変数の値を変更せずにメソッド本体内で操作されます。

4. 参照型パラメータの場合、メソッド本体はパラメータが指すオブジェクトのプロパティを操作し、元の変数が指すオブジェクトのプロパティ値を変更します。

例:

public class Main {
    private static void getMiddleOne(boolean b, Boolean boo, Boolean[] arr){
        b = true;
        boo = new Boolean(true);
        arr[0] = true;
    }
       //测试
    public static void main(String[] args) {
        boolean b = false;
        Boolean boo = new Boolean(false);
        Boolean[] arr = new Boolean[]{false};
        getMiddleOne(b, boo, arr);
        System.out.println(b);
        System.out.println(boo.toString());
        System.out.println(arr[0]);
        /**
        * output:
        * false
        * false
        * true
        */
    }
}

次の 2 点を理解していれば、上記の現象に答えることができます:

1. 基本的なデータ型value は値そのものなので、例の b の値は false です。ラッパー クラスが自動的にボックス化およびボックス解除するため、基本型と同じように処理できるため、例の boo の値は false です。 ; 配列は参照型なので、 arr 値は Boolean[] への参照です。

2. Java では、値の転送のみが行われ、参照の転送は行われないため、getMiddleOne メソッドに渡される 3 つのパラメーターは、b の値のコピー、boo の値のコピー、および arr の値のコピーです。

上記の 2 点から明らかですが、getMiddleOne メソッドで実行される b=true と boo = new Boolean(true) は、そのコピーに新しい値を代入するため、元の変数の値は変わりません。 ; 同様に、arr[0] = true は、arr のコピーが指す配列の最初の要素に true をコピーします。arr の値と arr のコピーの値は両方とも配列への参照であるため、コピーarr が指す配列と arr が指す配列は同じであるため、arr がコピーした配列の要素を変更すると、元の変数 arr にも影響します。

概要

Java では、値のみが渡されます。基本型は値のコピーを渡し、参照型は参照のコピーを渡します。

以上がJavaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。