是
if(a)
{
do
{
b();
}
while(a);
}
完全一样
while(a)
{
b();
}
?
它们是相同的,我将提供一个示例,您可能实际上想要使用“Do-While”而不是 while 循环。
do{
x = superMathClass.performComplicatedCalculation(3.14);
}
while (x < 1000);
与
x = superMathClass.performComplicatedCalculation(3.14);
while ( x < 1000);
{
x = superMathClass.performComplicatedCalculation(3.14);
}
使用 Do-While 的论据如上所示。假设该行x = superMathClass.performComplicatedCalculation(3.14);
不只是一行代码,而是 25 行代码。如果您需要更改它,在执行过程中您只需更改一次。在 while 循环中,您必须更改它两次。
我确实同意休息时间,你应该避免他们,但也有对他们有利的论点。
是的,它们是一样的。
您创建了一种非常难以理解的方式来while
使用do-while
loop +模拟循环if
。
您应该阅读以下内容:
测试循环在顶部还是底部?(同时与做同时)
如果您想在循环的第一次迭代之前测试条件,请使用while循环。
如果您想在运行循环的第一次迭代后测试条件,请使用do-while循环。
是的,它们是等价的。
如果a
是false
,b
则根本不会执行。
如果a
是true
,b
将执行直到a
成为false
。
这对于两种构造同样适用。
在这种情况下,这些结构几乎可以互换,但我认为 if do while 循环在某些情况下很有用,例如,如果某些变量需要在循环的所有迭代中保留,但如果循环从未执行则不需要. (并且假设它可能不是。)例如
if (condition) {
LargeComplexObject object = new LargeComplexObject();
do {
some action
...
object.someMethod();
...
more actions
}
while (condition);
}
如果该对象的初始化是时间或内存密集型的,这可能是一个有用的优化,并且预计此循环只会偶尔触发,并且会在相关方法的大多数执行中被跳过。当然,在其他情况下它也可能有用,基本上我认为如果在循环开始之前应该执行一些事情,那么应该使用 if-do-while,只有当你进入循环时。
是的,但你应该更喜欢后者。