Java - 返回值是不是会破坏循环?
Posted
技术标签:
【中文标题】Java - 返回值是不是会破坏循环?【英文标题】:Java - Does returning a value break a loop?Java - 返回值是否会破坏循环? 【发布时间】:2012-05-26 12:38:41 【问题描述】:我正在编写一些基本上遵循以下格式的代码:
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】:是*
是的,通常(在你的情况下)它确实会跳出循环并从方法返回。
异常
一个例外是,如果循环内有一个 finally 块并围绕 return 语句,那么 finally 块中的代码将在方法返回之前执行。 finally 块可能不会终止 - 例如,它可能包含另一个循环或调用永远不会返回的方法。在这种情况下,您永远不会退出循环或方法。
while (true)
try
return; // This return technically speaking doesn't exit the loop.
finally
while (true) // Instead it gets stuck here.
【讨论】:
即使在try块中没有return,你的逻辑最终也会被击中【参考方案2】:Return 确实会中断循环并立即从整个方法返回。唯一会在退出时执行的代码是finally
子句的主体和任何synchronized
语句的释放。
【讨论】:
【参考方案3】:我还要补充一点,如果你想打破循环的当前迭代,并立即开始下一个循环,你可以使用:
continue;
似乎没有人建议它。
【讨论】:
@hobbyist : 请举一个例子,因为我不清楚你的答案。【参考方案4】:是的。
无论如何,对于这么短的问题,我认为您自己尝试会更好(并获得更早的答案)。
【讨论】:
@duffymo 但是一旦它在 SO 上,它有两个优点:1)它可以更快地查找其他人,2)它阐明了边缘情况和进一步的讨论。 @JoshPinter 这也是一个很好的 QA 候选人,你自己提供答案。 @cst1992 前一天我在做,但最近我开始对此投反对票,因为人们说“好吧,如果你解决了现在问题是什么?”所以...【参考方案5】:当被调用时从任何地方退出一个方法并返回一个值给调用者时返回。
【讨论】:
以上是关于Java - 返回值是不是会破坏循环?的主要内容,如果未能解决你的问题,请参考以下文章