Is
if(a)
{
do
{
b();
}
while(a);
}
完全像
while(a)
{
b();
}
?
Is
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行。如果你需要改变它,在do while循环中你只需要改变一次。在while循环中你需要改变两次。
我同意do while循环有缺陷,应该避免使用,但也有支持它们的论点。
是的,它们是相同的。
你用do-while
循环+if
创建了一种非常难以阅读的方式来嘲笑while
循环。
你应该阅读这篇文章:
测试循环在顶部还是底部?(while vs. do while)
当你想在循环的第一个迭代之前测试一个条件时,请使用while循环。
当你想在运行第一个迭代后测试一个条件时,请使用do-while循环。
是的,它们是等价的。
如果a
为false
,b
将根本不会执行。
如果a
为true
,b
将一直执行,直到a
变为false
。
这对于两种结构来说同样适用。
if (condition) {
LargeComplexObject object = new LargeComplexObject();
do {
some action
...
object.someMethod();
...
more actions
}
while (condition);
}
如果对象的初始化需要耗费大量时间或内存,并且预计该循环只会偶尔触发并且在大多数相关方法的执行中将被跳过,则此优化可能非常有用。当然,还有其他一些情况也可能很有用,基本上我认为 if-do-while 应该在你的循环开始之前执行某些操作时使用,仅在进入循环时执行。
是的,但你应该更喜欢后者。
modify
)。 - user1365010if(a)
。 - Felix Kling