Подтвердить что ты не робот

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 или будет ли метод завершен после возвращения значения?

Спасибо

4b9b3361

Ответ 1

Да *

Да, обычно (и в вашем случае) он вырывается из цикла и возвращается из метода.

Исключение

Единственное исключение состоит в том, что если в цикле есть окончательный блок и окружающий оператор return, тогда код в блоке finally будет выполнен до возвращения метода. Окончательный блок может не завершиться - например, он может содержать другой цикл или вызвать метод, который никогда не возвращается. В этом случае вы никогда не выйдете из цикла или метода.

while (true)
{
    try
    {
        return;  // This return technically speaking doesn't exit the loop.
    }
    finally
    {
        while (true) {}  // Instead it gets stuck here.
    }
}

Ответ 2

Возврат прерывает цикл и сразу возвращается из всего метода. Единственный код, который будет выполнен на выходе, является телом предложения finally и выпуском любого оператора synchronized.

Ответ 3

Да.

Во всяком случае, для таких коротких вопросов, я думаю, вам будет лучше (и получить более ранний ответ), просто попробовав это самостоятельно.

Ответ 4

Я также должен добавить, что если вы хотите разбить текущую итерацию цикла и сразу запустить следующий, вы можете использовать:

continue;

Как кажется, никто этого не предложил.

Ответ 5

Возвращает каждый раз, когда вызываемый выдает метод из любой точки и возвращает значение вызывающему.