ホームページ  >  記事  >  Java  >  14.Javaの基本 - パラメータの受け渡し

14.Javaの基本 - パラメータの受け渡し

黄舟
黄舟オリジナル
2017-02-27 10:55:091005ブラウズ

基本概念

Java には、値による受け渡しとアドレスによる受け渡しという 2 つのパラメーター受け渡しメカニズムがあります。

  • 基本型がパラメータとして渡される場合、それは渡された値のコピーであり、このコピーをどのように変更しても、元の値は変更されません。

  • オブジェクトがパラメータとして渡される場合、メモリ内のオブジェクトのアドレスのコピーがパラメータに渡されます。これはアドレス渡しです。


学習例

1. 基本型はパラメータとして渡されます

public static void main(String[] args) {    int n =3; // ①

    System.out.println(n); // 3

    chageData(n); // ②

    System.out.println(n); // 3}public static void chageData(int num){
        num = 10; // ③}

出力結果を観察し、n の値が変化していないことを確認します。

nとnumはどちらも基本型なので、値は変数に直接格納されます。

フローチャートは次のとおりです(コードの①②③に対応):

14.Javaの基本 - パラメータの受け渡し


2. オブジェクトはパラメータとして渡されます

まず文字列の例を見てください:

public static void main(String[] args) {
    String str = "hello"; // ①
    System.out.println(str); // hello

    chageData(str); //②

    System.out.println(str); // hello}public static void chageData(String s){
    s ="world"; // ③}

結果を観察してください。 strは変わっていません。フローチャートに基づいた分析は次のとおりです:

  • ①が実行されると、メモリ内の実際の String オブジェクトを指すアドレス インデックスを含むオブジェクト参照 str がヒープ内に生成されます

  • ②ではオブジェクト参照sを生成し、渡し参照により「hello」のアドレスインデックスも取得します。

  • ③のオブジェクト参照を再割り当てします。オブジェクトの値が "hello" -> "world" である必要があるのは当然です。ただし、String が変更されると新しいオブジェクトが作成されるため、String は不変であるため、新しいオブジェクトが作成されます。

14.Javaの基本 - パラメータの受け渡し


StringBuffer の例をもう一度見てください:

public static void main(String[] args) {
    StringBuffer stb = new StringBuffer("hello"); // ①
    System.out.println(stb); // hello

    chageData(stb); // ②

    System.out.println(stb); // hello world}public static void chageData(StringBuffer s){
    s.append("world"); // ③}
}

結果を観察すると、StringBuffer オブジェクトは可変であり、その内容を変更しても新しいオブジェクトは作成されないため、stb が変更されていることがわかります

14.Javaの基本 - パラメータの受け渡し

上記は「14.Java Basics - Parameter Passing」の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。