这两个循环是否总是等价的

时间:2011-09-13 20:03:24

标签: java loops

在Java编程语言中,以下两个循环是否等效于任何表达式 exp 和循环体 body ?唯一的条件应该是新引入的变量 b 不会出现在方法的其他地方(并且不隐藏属性,......)

while(exp) {
    body
}

for(boolean b = exp; b; b = exp) {
    body
}

2 个答案:

答案 0 :(得分:5)

是的,根据这些假设。

for构造在第一次迭代之前检查条件,因此如果bfalse,那么将永远不会执行正文。换句话说,在代码示例中,exp在每次循环迭代之前精确计算一次,结果用于决定是否执行该迭代。

但是你为什么要写这样的代码?

答案 1 :(得分:-1)

不,他们不是。使您的代码可读。

一个 计算

另一个是等待条件成立。