web-dev-qa-db-ja.com

Java-値を返すとループが壊れますか?

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

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;
}

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

ありがとう

36
mark

はい*

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

例外

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.
    }
}
87
Mark Byers

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

19
Keith Randall

また、ループの現在の反復を中断し、次のループをすぐに開始したい場合は、次を使用できます。

continue;

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

15
Hobbyist

はい。

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

10
SJuan76

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

0
cobie