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 语句周围有一个 final 块,则在方法返回之前将执行 final 块中的代码。finally 块可能不会终止 - 例如,它可以包含另一个循环或调用从不返回的方法。在这种情况下,您永远不会退出循环或方法。

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

答案 2

Return 会中断循环,并立即从整个方法返回。在出路时执行的唯一代码是子句的正文和任何语句的发布。finallysynchronized