はじめに
こんにちは。私はプログラミング未経験で開発職に配属されてから2か月目の超初心者です。
基本中の基本である「戻り値」について、初めの頃は「メソッドから返される値らしいけどわかるようでわからないな~」という感じでした。
なので、Javaを勉強し始めた人が「戻り値」って何なのかをまずざっくりと知ることができる手助けになればという気持ちでこの記事を書くことにしました。
わかっていなかったポイント
- 戻り値がいる場合といらない場合の違い
- 値を返さない(戻さない)とは具体的にどういう状況なのか
戻り値(返り値)とは
- メソッドが呼び出されたときに 「呼び出し元に」返される値 のこと
- メソッドで書かれている処理を実行し、最終的に返される値のこと
はじめは「値を返す」って、System.out.printlnなどの出力でも値が返ってくるってことじゃないの???と思っていたのですが、 メソッドを呼び出した「呼び出し元に」値を返す という意味です。
戻り値がいる場合といらない場合の使い分け
戻り値がある場合とない場合の最も大きな違いは、メソッドが呼び出された後に返される値の有無です。
使い分けのポイントは、 呼び出し元で値を必要とするか どうかです。
戻り値がいる場合
メソッドが呼び出された結果として、 呼び出し元に値を返したい 場合は、戻り値が必要です。
この場合、呼び出し元に戻ってから得られた値を利用して、処理を書くことができます。
戻り値があるメソッドは、呼び出されたときに呼び出し元に「この値を使って処理を進めてください!」と値を渡して(返して)あげるイメージです。
戻り値が必要な例
呼び出し元が、戻り値を使って、
- データの加工や計算を行いたい場合
- データの検索を行うメソッド
書き方
返したい値の型を、メソッドの宣言時に指定します。
例えば、int型の戻り値を返したい際には、メソッド名の前にintを指定して宣言します。
アクセス修飾子 戻り値の型 メソッド名( 引数 ) {
処理;
return 戻り値;
}
//具体例:引数として受け取った2つの整数の和を計算するメソッド
public static int calculateSum(int num1, num2) {
int sum = num1 + num2;
return sum;
}
戻り値がいらない場合
何らかの処理を行うだけで 呼び出し元に値を返さない 場合は、戻り値は必要ありません。
値を返さないことってあるの?とかつては思っていたのですが、以下のように「表示するだけ」「ファイルに書き込むだけ」といったものは、値を返しているのではなく、単なる処理実行になります。
戻り値がいらない例
- 何らかの操作を実行した結果を表示する(例:System.out.println)
- データをファイルに書き込む(例:filewriter.write())
- 例外処理を行う(例:throw new ~~)
- DBに接続する
書き方
メソッド宣言の際に戻り値の型にvoidを指定します。
voidとは「空所」という意味で、このメソッドは戻り値を持たないということを示す役割をします。
アクセス修飾子 void メソッド名( 引数 ) {
処理;
}
//具体例:引数として受け取った文字列をコンソールに表示するだけのメソッド
public static void displayMessage(String message) {
System.out.println(message);
}
戻り値を考える際のポイント
メソッドの目的を明確にする
戻り値を返すメソッドを宣言する前に、そのメソッドが何を行うのかを明確にする必要があります。そもそもメソッドから得られる値は呼び出し元で使う予定なのか、使うのであればどのような処理・値が必要なのかを考えます。
メソッドが返す値の型を決定する
戻り値が必要である場合は、戻り値の型を決定します。整数、真偽値、文字列など、さまざまなデータ型が存在するため、呼び出し元で必要とされているものに合ったものにします。
まとめ
- 戻り値とはメソッドを呼び出した 「呼び出し元に」返す値
-
return 戻り値
と書く - メソッドの宣言時に、戻り値の型も指定する
- 戻り値とvoidの使い分けは 「呼び出し元が値を必要としているか」