続・とってもわかりやすいJAVA 【戻り値がvoidのメソッドを途中で終了させる】


メソッド定義には戻り値の型が必要です。
メソッドの実行結果が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文終了後");
    }
}

実行結果

VoidSample_01

 

結果は50と表示されます。

 

 

解説

counterメソッドでnumの値を変更し続けています。
しかし50になったところでreturnが実行されます。
すると、その時点でcounterメソッドが終了となるので、for文、あるいはfor文後の出力は実行されません。
したがってnumは50になるわけですね。

「戻り値の型がvoidのメソッドでもreturn文で終了できる」
ひとつテクニックとして覚えておいて損はないはずです!

  • このエントリーをはてなブックマークに追加

PAGE TOP