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 или будет ли метод завершен после возвращения значения?
Спасибо
Ответы
Ответ 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
Возвращает каждый раз, когда вызываемый выдает метод из любой точки и возвращает значение вызывающему.