LeoAndo / java-training

0 stars 0 forks source link

参照渡しと値渡しについて #36

Open LeoAndo opened 3 years ago

LeoAndo commented 3 years ago

値(プリミティブ)型とは

値型とは、Javaでデータを扱う型の一つでメモリ領域に決められた分のサイズをあけることで情報の保持が可能です。

値型はJavaには以下の8種類存在します

参照型とは

参照型はデータが格納されているメモリ上の参照(アドレス)のコピーを保持している型です。 値型に含まれなかったものはすべて参照型に含まれます。

値渡しと参照渡しの違い

値渡しと参照渡しの違いは 渡した変数の状態が変化するかという点です。

値渡し

public static void test(int num) { num += 10; System.out.println(num); }

/ 実行結果 20 10 /


参照渡し
- 参照渡しで渡すと元の変数の内容も書き換わる
```java
public static void main(String[] args) {
  String[] array = {"おはようございます", "こんにちは", "こんばんは"};
  test(array);
  System.out.println(array[0]);
}

public static void test(String[] array) {
  array[0] = "Hello";
  System.out.println(array[0]);
}
/*
実行結果
Hello
Hello
*/

参照の値渡し

public static void test(String[] array) { array = new String[3]; array[0] = "Hello"; System.out.println(array[0]); } / 実行結果 Hello おはようございます /


新しく初期化したインスタンスが作られているアドレスを参照し、
元の変数と引数とで参照するアドレスが変わる。