ホームページ  >  記事  >  Java  >  Javaで渡すパラメータは値または参照に基づいていますか?

Javaで渡すパラメータは値または参照に基づいていますか?

王林
王林オリジナル
2024-01-30 09:09:151268ブラウズ

Javaで渡すパラメータは値または参照に基づいていますか?

Java のパラメータ受け渡しメソッドは値渡しですか、それとも参照渡しですか?

Java では、パラメーターの受け渡しメソッドには、パラメーターのタイプに応じて、値の受け渡しと参照の受け渡しの両方が含まれます。

  1. 値による受け渡し
    値の受け渡しとは、メソッドが呼び出されたときに、実際のパラメーターのコピーをメソッドの仮パラメーターに渡すことを指します。メソッド内の仮パラメータの値を変更しても、実際のパラメータの値には影響しません。

サンプル コードは次のとおりです。

public class PassByValueExample {
    public static void main(String[] args) {
        int number = 10;
        modifyValue(number);
        System.out.println("Number after method call: " + number);
    }
    
    public static void modifyValue(int value) {
        value = 20;
        System.out.println("Value inside method: " + value);
    }
}

出力結果は次のとおりです。

Value inside method: 20
Number after method call: 10

上記のコードでは、modifyValueメソッドは整数型パラメータ value を受け入れます。メソッド内で、value の値を 20 に変更し、出力します。ただし、main メソッドで number の値を出力すると、number がまだ 10 であることがわかり、仮パラメータの値を変更すると、実際のパラメータの値には影響しません。

  1. 参照渡し
    参照渡しとは、メソッドが呼び出されたときに、実パラメータの参照 (メモリ アドレス) がメソッドの仮パラメータに渡されることを意味します。メソッド内の仮パラメータが指すオブジェクトを変更すると、実パラメータが参照するオブジェクトの状態が変更されます。

サンプル コードは次のとおりです。

public class PassByReferenceExample {
    public static void main(String[] args) {
        StringBuilder name = new StringBuilder("Alice");
        modifyName(name);
        System.out.println("Name after method call: " + name);
    }
    
    public static void modifyName(StringBuilder builder) {
        builder.append(" Smith");
        System.out.println("Name inside method: " + builder);
    }
}

出力結果は次のとおりです。

Name inside method: Alice Smith
Name after method call: Alice Smith

上記のコードでは、modifyNameメソッドは、builder 型の StringBuilder パラメータを受け入れます。メソッド内では、builder が指すオブジェクトに「Smith」が追加され、出力されます。 main メソッドで name を出力すると、name が「Alice Smith」に変更されたことが判明しました。これは、仮パラメータの値を変更すると、実パラメータによって参照されるオブジェクト。

Java には参照を渡す機能がありますが、Java には参照によって実際のパラメータ値を直接変更する方法が提供されていないことに注意してください。たとえば、メソッド内の仮パラメータに新しいメモリ アドレスを割り当てて、実パラメータの参照を変更することはできません。

要約すると、Java でのパラメータの受け渡し方法はパラメータの型に基づいて決定されます。基本的なデータ型 (intchar など) の場合は値の受け渡しが使用され、オブジェクト型の場合は参照の受け渡しが使用されます。値による受け渡しは単に実際のパラメーターのコピーに対して操作を行うのに対し、参照による受け渡しは実際のパラメーターによって参照されるオブジェクトに対して操作します。

以上がJavaで渡すパラメータは値または参照に基づいていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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