[英]Do While Loops Versus For Loops in Java for Counting
在计算时,是应该使用do-while
循环还是for
循环? 因为这:
class Main {
public static void main(String[] args) {
int times = 1;
do {
System.out.println("I have printed " + times + " times.");
times++;
} while (times < 6);
}
}
似乎与此完全相同:
class Main {
public static void main(String[] args) {
for (int times = 1; times < 6; times++) {
System.out.println("I have printed " + times + " times.");
}
}
}
这是速度的差异吗? 偏爱? 情况? 个人怪癖? 某种“Java社会禁忌”? 我不知道。 似乎可以用于有效计数,只需要更多。 两者都打印完全相同的东西。
System.out.println("Many thanks!!");
你是对的,这些做同样的事情(除了一个开始计数为0而另一个开始计数为1,但这只是一个实现细节)。 如果您的程序事先知道(在循环开始之前)您希望循环迭代多少次,那么大多数Java开发人员会告诉您使用for
循环。 这就是它的设计目标。
while
循环或do while
循环更适合在退出循环之前查找特定值或条件的情况。 (类似于count >= 10
或userInput.equals("N")
。任何评估为布尔值True / False值的东西。)
面对这些困境时,目标是可读性和熟悉性。 您不应该关注微观优化。 注重可读性并明确传达您的意图。 像其他人一样在类似的情况下做。
就像@ Bill-The-Lizard所说的那样, while
循环向你的代码的读者建议你选择它,因为你没有计算,但重复直到满足条件。 至少一次 - 否则你选择while(...){ }
循环。
换句话说, for
, do {} while()
和while() { }
通常工作相同。 但是你可以更好地传达你对你特定逻辑的意图。
这取决于程序员选择何时使用for循环或while循环,但大多数程序员遵循的一般做法是
for(;true;)
永远循环)。 例如,循环运行10次或n次,其中n是变量 for(int i = 0; i < n; i++) {
//Do something
}
while(x != 0) {
//Do something;
x--;
}
while(true) {
// some code to execute on which the condition depends
if(condition is true) {
break;
}
}
我认为这更像是一种可读性和语法糖。 这一条件
while (condition)
也可以写成
for (; condition; )
但显然第一个看起来好多了,而且更具可读性。
按照惯例,大多数Java开发人员使用for循环 有效的Java建议使用循环而不是while循环,因为循环变量可以使用更严格的范围来减少错误。 http://www.corejavaguru.com/effective-java/items/45
最新版本的Java还允许以下内容
IntStream.range(0, 6).forEach(
i -> System.out.println("I have printed " + i + " times.")
);
除了个人偏好之外,这个还有一个优点,即索引由运行时维护,程序员不需要++i
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.