メソッド定義には戻り値の型が必要です。
メソッドの実行結果がintなら戻り値の型をintに、StringならStringとして定義する必要があります。
この定義と異なるデータ型の値はreturnできません。
そしてreturn文が実行されるとメソッドはその時点で処理を終えます。
次の行にコードが書かれていたとしても実行されません。
しかし、戻り値がないような処理も存在します。
たとえばSystem.out.printでコンソールに出力するだけの処理、あるいはインスタンス変数の値を変えるだけの処理。
こういった場合は戻り値の型をvoidと宣言するとreturn文がなくてもコンパイルが通ります。
ここまでは良く知られているのですが、実はvoidのメソッドにreturnを書くこともできます。
この場合returnと書くだけで、戻り値は必要ありません。
するとその時点でメソッドが終了となります。
サンプルで確認してみます。
■VoidSample.java
public class VoidSample { static int num; public static void main(String[] args) { counter(); System.out.println(num); } public static void counter() { for(int i = 1; i < 100; i++) { num = i; if(i == 50) { return; } } System.out.println("for文終了後"); } }
■実行結果
結果は50と表示されます。
■解説
counterメソッドでnumの値を変更し続けています。
しかし50になったところでreturnが実行されます。
すると、その時点でcounterメソッドが終了となるので、for文、あるいはfor文後の出力は実行されません。
したがってnumは50になるわけですね。
「戻り値の型がvoidのメソッドでもreturn文で終了できる」
ひとつテクニックとして覚えておいて損はないはずです!