ホームページ  >  記事  >  ウェブフロントエンド  >  Java の値による呼び出しと参照による呼び出しの詳細な紹介

Java の値による呼び出しと参照による呼び出しの詳細な紹介

不言
不言転載
2019-03-16 10:41:343755ブラウズ

この記事では、Java の値による呼び出しと参照による呼び出しについて詳しく説明します。これには特定の参照値があります。必要な友人は参照できます。お役に立てば幸いです。 。

トピックは次のとおりです:

Java の値による呼び出しと参照による呼び出しの詳細な紹介

Java でパラメータを渡す 2 つの方法

  1. 値による呼び出し (値転送) : 渡された 整数値を渡すなどの値 (基本データ型の場合) です。実際、値によって渡されるメソッド呼び出しメソッドでは、パラメーターは実際のパラメーターの単なるコピーです。
  2. 参照による呼び出し: 渡されるのは、(オブジェクトの) オブジェクトへの参照です。つまり、渡されるのは、オブジェクトのアドレスです。実際、参照が渡されると、参照の新しいコピーが生成され、古い参照と新しい参照の両方が同じアドレスを指します。
#コード例

public class TestJavaCallBy {

    // 测试值传递
    public static void testCallByValue(int value) {
        value *= 10;
    }

    // 测试引用传递
    public static void testCallByReference(StringBuilder sb) {
        sb.append(" - " + ZonedDateTime.now());
    }

    public static void main(String[] args) {

        // 测试值变量
        int param = 1;
        // 测试引用对象
        StringBuilder sb = new StringBuilder("666");

        // 测试
        System.out.println(param);
        testCallByValue(param);
        System.out.println(param);

        System.out.println(sb.toString());
        testCallByReference(sb);
        System.out.println(sb.toString());
    }
}

控制台输出结果
1
// 结果仍为1,因为参数传递的是实参的一份拷贝,对实参不造成影响
1 

666
// 传递的是引用的拷贝,新旧两个引用指向同一个对象(地址),因此append操作是作用在该对象上
666 - 2019-03-16T01:25:57.933038500+08:00[Asia/Shanghai]

次に、次の結論を導き出すことができます。

    #値による呼び出しは、実際のパラメータの値を変更しません
  1. 参照による呼び出しでは実パラメータの参照アドレスを変更できません
  2. 呼び出しによる参照では実パラメータの内容を変更できます
すると、この質問に対する答えはこれです。

以上がJava の値による呼び出しと参照による呼び出しの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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