在 Java 中使用 break 退出循环是不是不好的做法?[已关闭]
我想知道使用语句退出循环而不是满足循环条件是否是一种“不良做法”?break
我对Java和JVM没有足够的洞察力来了解如何处理循环,所以我想知道这样做是否忽略了一些关键的东西。
这个问题的重点:是否存在特定的性能开销?
我想知道使用语句退出循环而不是满足循环条件是否是一种“不良做法”?break
我对Java和JVM没有足够的洞察力来了解如何处理循环,所以我想知道这样做是否忽略了一些关键的东西。
这个问题的重点:是否存在特定的性能开销?
好领主不。有时,在满足总体要求的循环中可能会发生某些事情,而不满足逻辑循环条件。在这种情况下,使用,以阻止您毫无意义地绕着循环循环。break
例
String item;
for(int x = 0; x < 10; x++)
{
// Linear search.
if(array[x].equals("Item I am looking for"))
{
//you've found the item. Let's stop.
item = array[x];
break;
}
}
在此示例中,什么更有意义。每次继续循环到 10,即使你已经找到了它,还是循环直到你找到项目并停止?或者把它放到现实世界中;当你找到你的钥匙,你继续寻找吗?
编辑以响应评论
为什么不设置为打破循环?这是毫无意义的。我们有!除非您的代码所做的假设肯定比以后更大(并且可能不应该),否则您只需使用 .x
11
break
x
10
break
为了完整性而编辑
肯定还有其他方法来模拟 。例如,在循环中的终止条件中添加额外的逻辑。说它要么是毫无意义的循环,要么是使用是不公平的。如前所述,while 循环通常可以实现类似的功能。例如,按照上面的示例。。break
break
while(x < 10 && item == null)
{
if(array[x].equals("Item I am looking for"))
{
item = array[x];
}
x++;
}
使用简单意味着您可以通过循环实现此功能。这也意味着,每当您希望循环的行为不同时,您都不必在终止逻辑中添加条件。例如。break
for
for(int x = 0; x < 10; x++)
{
if(array[x].equals("Something that will make me want to cancel"))
{
break;
}
else if(array[x].equals("Something else that will make me want to cancel"))
{
break;
}
else if(array[x].equals("This is what I want"))
{
item = array[x];
}
}
而不是具有如下所示的终止条件:while loop
while(x < 10 && !array[x].equals("Something that will make me want to cancel") &&
!array[x].equals("Something else that will make me want to cancel"))
使用 ,就像几乎任何其他语言功能一样,在特定上下文中,您显然滥用了它,这可能是一种不好的做法。但是一些非常重要的习语不能在没有它的情况下编码,或者至少会导致可读性大大降低的代码。在这些情况下,是要走的路。break
break
換句話說,不要聽從任何一概而論的、無條件的建議——關於或其他任何事情。我没有一次看到代码完全消瘦,只是为了从字面上强制执行“好做法”。break
关于您对性能开销的担忧,绝对没有。在字节码级别,无论如何都没有显式循环构造:所有流控制都是根据条件跳转实现的。