Java のパラメータ受け渡しメソッドは値渡しですか、それとも参照渡しですか?
Java では、パラメーターの受け渡しメソッドには、パラメーターのタイプに応じて、値の受け渡しと参照の受け渡しの両方が含まれます。
サンプル コードは次のとおりです。
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 であることがわかり、仮パラメータの値を変更すると、実際のパラメータの値には影響しません。
サンプル コードは次のとおりです。
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 でのパラメータの受け渡し方法はパラメータの型に基づいて決定されます。基本的なデータ型 (int
、char
など) の場合は値の受け渡しが使用され、オブジェクト型の場合は参照の受け渡しが使用されます。値による受け渡しは単に実際のパラメーターのコピーに対して操作を行うのに対し、参照による受け渡しは実際のパラメーターによって参照されるオブジェクトに対して操作します。
以上がJavaで渡すパラメータは値または参照に基づいていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。