80

パス検索チュートリアルを見ていると、メソッドreturn内のステートメントに気付きましたvoid(class PathTest、126 行目):

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

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

4

7 に答える 7

146

その時点でメソッドを終了するだけです。が実行される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
}
于 2009-04-13T17:30:28.023 に答える
30

returnvoid メソッドを使用できますが、値を返すことはできません(のようにreturn 5;)。そのため、voidメソッドと呼ばれます。return ステートメントで常に void メソッドを明示的に終了する人もいますが、必須ではありません。ただし、関数を早期に終了するために使用できます。

void someFunct(int arg)
{
    if (arg == 0)
    {
        //Leave because this is a bad value
        return;
    }
    //Otherwise, do something
}
于 2009-04-13T17:32:38.827 に答える
25

このキーワードは、コール スタックからフレームを単純にポップし、コントロールを関数呼び出しの次の行に戻します。

于 2009-04-13T17:36:00.363 に答える
14

Java 言語仕様では、メソッドが void を返す場合、式なしで返すことができると規定されています。

于 2009-04-13T17:32:53.930 に答える
4

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

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

于 2009-04-13T17:33:48.857 に答える
3

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

于 2009-04-13T17:33:16.503 に答える