44

基本的に次の形式に従うコードをいくつか書いています。

public static boolean isIncluded(E element) {
    Node<E> c = head;
    while (c != null) {
        if (cursor.getElement().equals(element)) {
            return true;
        }
        c = c.getNext();
    }
    return false;
}

コードは、ノードのリスト内の要素を検索します。ただし、私の質問は、if ステートメントが true を返す必要があると述べている要素を while ループが見つけた場合、単に true を返し、ループを中断するのでしょうか? さらに、ループが中断された場合、メソッドを続行して false を返しますか、または値が返されたらメソッドは完了しますか?

ありがとう

4

5 に答える 5

103

はい*

はい、通常(そしてあなたの場合)ループから抜け出し、メソッドから戻ります。

例外

例外の 1 つは、ループ内で return ステートメントを囲む finally ブロックがある場合、メソッドが戻る前に、finally ブロック内のコードが実行されることです。finally ブロックは終了しない可能性があります。たとえば、別のループが含まれているか、返されないメソッドを呼び出す可能性があります。この場合、ループまたはメソッドを終了することはありません。

while (true)
{
    try
    {
        return;  // This return technically speaking doesn't exit the loop.
    }
    finally
    {
        while (true) {}  // Instead it gets stuck here.
    }
}
于 2012-05-18T23:48:21.537 に答える
22

Return はループを中断し、メソッド全体からすぐに戻ります。途中で実行される唯一のコードは、句の本体とステートメントfinallyの解放です。synchronized

于 2012-05-18T23:48:11.400 に答える
17

また、ループの現在の繰り返しを中断し、すぐに次の繰り返しを開始したい場合は、次を使用できることも付け加えておきます。

continue;

誰もそれを提案していないようです。

于 2014-12-31T20:05:20.300 に答える
11

はい。

とにかく、このような短い質問については、自分で試してみた方が良いと思います (そして、より早く回答を得ることができます)。

于 2012-05-18T23:48:24.060 に答える
2

呼び出されるたびに戻るは、どこからでもメソッドを終了し、呼び出し元に値を返します。

于 2012-05-18T23:55:09.427 に答える