这两个代码片段是相同的还是它们有何不同?

时间:2013-09-03 15:47:28

标签: java while-loop

我正在努力实现我遇到此片段的联合查找问题。

while (root != id[root])
        root = id[root];

不一样
while ((root = id[root]) != id[root]);

除了可能是第二个构造执行赋值操作至少一次,而第一个构造如果初始条件为假则甚至不执行一次。还有其他差异吗?

2 个答案:

答案 0 :(得分:3)

他们是非常不同的,想一想他们被执行的顺序。

首先检查root != id[root]然后是否指定了root = id[root]

在第二个你首先分配(嵌套)和然后检查。

通常的习惯用法是BufferedReader

String line;
while((line=bufferedReader.readLine()) != null) {
}

如果我们将其更改为第一种方法:

String line;
while(line != null) {
     line=bufferedReader.readLine()
}

我们甚至不会进入while循环...

答案 1 :(得分:1)

没有。这样看 -

int i;

while(i != 10)

VS

int i;
while((i = 10) != 10)