戻り値とは
呼び出されたメソッドから、呼び出し元のメソッドへ値を返すこと
戻される値のことを戻り値(または返り値)という
値の戻し方 public static 戻り値の型 メソッド名(引数リスト) { 処理 return 戻り値;
- 戻り値の型はreturnされる値と同じ型を指定
- 何も戻さない場合はvoidを指定。voidは何も無いという意味
戻り値を受け取る
戻り値を変数で受け取るパターン
型 変数名 = メソッド名(引数リスト); public class Main { public static void main(String args[]) { int getNum = sum(2, 4); System.out.println(getNum); } // public static int sum(int x, int y) { int num = x + y; return num; } }
メソッドの戻り値をそのまま使うパターン
public class Main { public static void main(String args[]) { System.out.println(sum(2, 3)); System.out.println(sum(sum(2, 3), sum(1, 4))); } // public static int sum(int x, int y) { int num = x + y; return num; } }
オーバーロード
同じ名前のメソッドを定義すること。
仮引数が異なれば同じ名前のメソッドを複数定義することが可能。 同じ名前のメソッドが複数あったとしても、仮引数の型が異なっていれば JVMが呼び出し元の引数(実引数)をみて、その引数の肩に一致するメソッドを呼び出す。
また、仮引数の個数が違う場合もオーバーロードが可能。
メソッドのシグネチャ
下記のようなメソッド宣言に記述するメソッド名、 引数の個数や型とその並び順をまとめて、メソッドのシグネチャという。 ※add(int x, int y)が該当
public static int add(int x, int y)
オーバーロードは、シグネチャが重複しない場合のみ許される
メソッドの引数や戻り値に配列を用いる
サンプルコード
public class Main { public static void main(String args[]) { int[] array = { 1, 2, 3 }; printArray(array); } //int型配列を受け取り、全ての要素を表示するメソッド public static void printArray(int[] array) { for (int element : array) { System.out.println(element); } } }
値渡しと参照渡し
- 値渡し 基本型の変数をメソッド呼び出しで渡した場合がこれに当たる。
呼び出し元の変数の内容が、呼び出し先の引数にコピーされる。 呼び出し先で引数の内容を書き換えても、呼び出し元の変数は変化しない。
- 参照渡し 配列をメソッド呼び出しで渡した場合がこれに当たる。
呼び出し元の配列のアドレスが、呼び出し先の引数にコピーされる。 呼び出し先で配列の実態を書き換えると、呼び出し元にも影響する。 (同じ配列のアドレスを参照している為)
サンプルコード
public class Main { public static void main(String args[]) { int[] array = { 1, 2, 3 }; //メソッド実行 incArray(array); //拡張for文でarrayの全要素を出力 for (int i : array) { System.out.println(i); } } //int型配列を受け取り、配列内の要素全てに1を加えるメソッド //配列の要素に +1 インクリメントを行う public static void incArray(int[] array) { for (int i = 0; i < array.length; i++) { array[i]++; } } }
戻り値に配列を返すメソッドのサンプル
public class Main { //int型配列を作成して戻すメソッド //実引数にはint型の配列の要素数を受け取る //戻り値には配列の要素をインクリメントした配列を返す public static int[] makeArray(int size) { int[] newArray = new int[size]; for (int i = 0; i < newArray.length; i++) { newArray[i] = i; } return newArray; } public static void main(String[] args) { int[] array = makeArray(3); for (int i : array) { System.out.println(i); } } }
戻り値も引数同様、配列の先頭要素のアドレスが mainメソッドに戻される。