web-dev-qa-db-ja.com

Javaのvoidメソッドでreturnキーワードは何をしますか?

パス検索チュートリアル を見て、returnメソッド(クラスvoid、126行目)内にPathTestステートメントがあることに気付きました。

if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) {
    return;
}

私はJavaの初心者です。なぜそこにあるのか教えてもらえますか?私が知る限り、voidメソッド内のreturnは許可されていません。

61
Relequestual

その時点でメソッドを終了します。 returnが実行されると、残りのコードは実行されません。

例えば。

public void test(int n) {
    if (n == 1) {
        return; 
    }
    else if (n == 2) {
        doStuff();
        return;
    }
    doOtherStuff();
}

コンパイラは、一部のコードに到達できないことを通知するのに十分なほど賢いことに注意してください。

if (n == 3) {
    return;
    youWillGetAnError(); //compiler error here
}
113
CookieOfFortune

Voidメソッドにreturnを含めることはできますが、単に値を返すreturn 5;)、それがvoidメソッドと呼ばれる理由です。一部の人々は、returnステートメントでvoidメソッドを常に明示的に終了しますが、必須ではありません。 canは、関数を早期に終了するために使用されますが、

void someFunct(int arg)
{
    if (arg == 0)
    {
        //Leave because this is a bad value
        return;
    }
    //Otherwise, do something
}
24
Pesto

キーワードは、呼び出しスタックからフレームをポップして、関数呼び出しに続く行にコントロールを返します。

18
MahdeTo

Java language specification は、メソッドがvoidを返す場合、式なしで返すことができることを示しています。

12
John Ellinwood

戻り値がなく、制御が呼び出し元メソッドに戻されるため、何も返さないことを除いて、指定されたパラメーターを持つ関数の戻り値と同じように機能します。

2
Chris Ballance

関数を終了し、何も返しません。

何かのようなもの return 1;は整数1を返すため、正しくありません。

2
Albert

条件付きでリストに追加するこの例を参照してください。 「return」という単語がないと、すべてのifが実行され、ArrayListに追加されます。

    Arraylist<String> list =  new ArrayList<>();

    public void addingToTheList() {

    if(isSunday()) {
        list.add("Pray today")
        return;
    }

    if(isMonday()) {
        list.add("Work today"
        return;
    }

    if(isTuesday()) {
        list.add("Tr today")
        return;
    }
}
1
iali87