-1

一些迭代代码是这样写的

while(true)                           for(int i = 0 ; i<=4;++i)
                                        {
{  
    System.out.println(i);               System.out.println(i);
   if(i==4)                                
     break;
                                          }
}

两者都有相同的逻辑,将其作为假设。那么哪一个会更快,更好地在代码中使用,使用其中任何一个的含义是什么?

4

8 回答 8

1

第一个是无限循环:)(取决于循环之前的 i)第二个(几乎)完成了您的期望。去拿一本关于你的编程语言的好手册,它会解释不同之处。

在另一个层面上:循环优化更适合 for 循环 (AFAIK),因此“聪明”的编译器可能会为“for”循环生成更好的代码。http://en.wikipedia.org/wiki/Loop_optimization

于 2013-10-18T10:56:19.177 回答
0

for每当我提前知道迭代次数时,我都会使用。

于 2013-10-18T11:10:07.317 回答
0

如果您知道要执行多少次操作,则必须使用 for 循环,否则使用 while 循环。例如:

  • 如果您有一些数组或数组列表,那么假设您想添加它的所有元素,那么您应该使用 for 循环,因为您通过size()函数知道数组列表的大小并通过length 属性知道数组的大小。
  • 如果您有结果集并且想要从中检索所有行,那么您应该使用 while 循环,因为您不知道结果集对象中有多少元素。
于 2013-10-18T11:10:13.020 回答
0

它们完全不同,但如果它们的行为相同,则永远不要break;在这种情况下使用。

第二个问题更清楚,当你必须考虑性能时,你不必在干净代码的撤退中这样做。

第二个 bucle 是自我记录的,而第一个你需要添加一个理由来添加中断以便可以理解。

于 2013-10-18T10:57:33.573 回答
0

要结束左侧的 while 循环,您必须添加i

编辑:假设i循环开始时小于 4

于 2013-10-18T10:58:00.590 回答
0

考虑到您的 while 不是无限循环,就性能而言没有区别。但是,我个人更喜欢 for 循环,因为它更干净。考虑一下:

int i = 0;
while (true) {
  doSomething(i++);
  if (i == 4)
    break;
}

看起来更干净

for (int i = 0; i <= 4; i++)
  doSomething(i);
于 2013-10-18T11:04:53.947 回答
0

忽略您的问题的错字,假设您想知道当两者loops本质上都在做同样的事情时我选择了哪一个。

答案是你可以选择任何一个。

但是,for loop如果您知道要运行 a 的次数,最好使用,loop因为您可以设置conditionduring initialization。并且将来如果您想扩展iteration.

while如果你不确定你想要多少,你可以选择iteration。在你的情况下,我会去for loop

注意:答案是基于意见的。

于 2013-10-18T11:30:45.663 回答
0

为此,请使用for一个,因为您需要 的值i。对维修有更多的了解。无论如何,编译器会优化代码和运行时可能是相同的。

于 2013-10-18T11:01:57.700 回答