この記事ではメソッドの戻り値を変数に代入するにはどうしたらいいのかを解説していきます。
また、そもそも戻り値とは何かについても解説していきます。
記事の内容
- 戻り値とは?
- 戻り値を受け取るにはどうしたらいいのか?
- 戻り値の型がvoidだったらどうなるのか?
- まとめ
戻り値とは?
戻り値とはメソッドの処理の結果、返される値のことを指します。
Javaでメソッドを定義する際は以下のような書き方をします。

このようにJavaのメソッドは
アクセス修飾子 戻り値の型 メソッド名(引数)
という形で定義していきます。
この時、戻り値の型をvoid以外で定義した場合、そのメソッドは戻り値の型と一致する値を返す必要があります。
この戻り値はreturnの後に書くことで指定することができます。
上記の画像の例の場合、returnの後に指定する戻り値の型はint型になっている必要があります。
つまり、returnの後の値、もしくは変数の型は戻り値の型で指定した型と一致していないとコンパイルエラーとなります。


これが戻り値です。ちなみに戻り値は型が一致していれば変数を指定しても問題ありません。
戻り値を受け取るにはどうしたらいいのか?
ではメソッドを呼び出して返された戻り値を受け取りたい場合どうしたらいいでしょうか?
これは戻り値の型と一致する変数を定義してあげることで変数に代入することができます。
以下のコードを例に詳しくみていきます。
public class Main {
// int型の引数を2つ受け取って、それを足した結果を返してくれるメソッド
public int sum(int number1, int number2) {
int result = number1 + number2;
return result;
}
public static void main(String[] args) {
Main main = new Main();
// int型の変数sumNumberを用意してsumメソッドの戻り値を受け取る
int sumNumber = main.sum(10, 20);
}
}
上記の例はsumメソッドを呼び出して、メソッドの戻り値を受け取るための処理を書いています。
sumメソッドの戻り値の型はint型となっています。そのため、戻り値を受け取るための変数もint型である必要があります。
ですので、sumNumberはint型で宣言しています。
もしsumNumberがString型やboolean型などになっていた場合、コンパイルエラーとなります。
戻り値の型がvoidだったらどうなるのか?
もしメソッドの戻り値の型がvoidだったらどうなるのでしょうか?
これは変数に代入するような書き方はできず、コンパイルエラーとなります。代入しようとしているのに、代入できるものがないということが原因です。
先ほどの例でsumメソッドの戻り値の型をvoidに変えてみました。
public class Main {
// 戻り値の型がvoidのsumメソッド
public void sum(int number1, int number2) {
int result = number1 + number2;
}
public static void main(String[] args) {
Main main = new Main();
// int型の変数sumNumberを用意しているが、そもそも戻り値がないためコンパイルエラーになる
int sumNumber = main.sum(10, 20);
}
}
voidとは「何もない」という意味です。つまり「戻り値が何もない」という定義になります。
そのため、sumメソッドの戻り値が voidの場合、先ほどの例にあったreturnの後に戻り値を指定することができません。
(※return自体は使うことができます。あくまで戻り値を指定できないということです)
応用的な話でメソッド参照やラムダ式を使うことで変数の中にメソッドを代入する処理を実装することができます。
しかし、ここで挙げている例のsumNumberではメソッド自体を代入することはできません。
あくまで、戻り値があるメソッドで、かつ戻り値と型が一致している場合のみコンパイルエラーにならないということです。
繰り返しにはなりますが、戻り値の型がvoidの場合、そもそも型がないため、変数に代入することができません。
まとめ
この記事のまとめは以下の2点になります。
- 戻り値を受け取るためには戻り値の型と同じ型の変数を使うことで受け取ることができます。
- 戻り値の型がvoidだった場合、変数に代入する処理はコンパイルエラーとなります。
最後まで読んでいただきありがとうございます!