break 存在是有原因的,对吧!
while(a < 5){
if(a == 3)
break;
else
a++;
}
非常简单的答案,休息一下,更少的标志,更少的调试,更容易维护。从while 更改为for 循环很简单,无需对逻辑进行任何修改。考虑一个需要添加更多条件的场景......
我的意见是,如果您不了解break 和continue 的用法,那么您可能会一直使用flag。但答案不止一个。您的问题是退出循环哪个选项更好,从您的两个示例中该选项很简单。我的意见是break 一个。
现在有些会使用标志,有些会使用中断,它们会提供更适合的代码示例。但这不是你的问题!
我可以给你很多例子,其中一些我会选择flag,而另一些我会选择break,还有一些两者兼而有之。这取决于我的循环要处理什么。
break 是为了标记如果我们达到这个条件,我们将完全退出循环。这在某些循环逻辑中非常重要。
即使您/同事在该条件之前或之后添加更多逻辑,循环仍然会在到达break 的位置退出。
有时您可能想标记您已达到某个条件,但仍想通过循环涵盖的所有指令,这里有一个 bool 可以帮助您停止循环,但在它通过所有逻辑之后。
如果您没有以正确的方式使用标志/中断,您的系统可能会表现得非常奇怪,特别是在添加新逻辑时。
请记住,您也可以将break 和continue 与标签一起使用,这并不常见,但很值得了解。
class ContinueWithLabelDemo {
public static void main(String[] args) {
String searchMe = "Look for a substring in me";
String substring = "sub";
boolean foundIt = false;
int max = searchMe.length() -
substring.length();
test:
for (int i = 0; i <= max; i++) {
int n = substring.length();
int j = i;
int k = 0;
while (n-- != 0) {
if (searchMe.charAt(j++) != substring.charAt(k++)) {
continue test;
}
}
foundIt = true;
break test;
}
System.out.println(foundIt ? "Found it" : "Didn't find it");
}
}