锁定老帖子 主题:一段趣味的代码关于 while循环的
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (8)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-16
do while的地方都可以用while代替
|
|
返回顶楼 | |
发表时间:2011-06-16
qljcly 写道 养成好的代码习惯,不写do while,自然不会出现这种情况。 do while本身没有错,do while可以改为任何形式的循环结构,不限于for,while等,但是改出来的代码结构没有do while适用时的好(第一次区别于其他次数的循环时)。 |
|
返回顶楼 | |
发表时间:2011-06-16
怎么可能是死循环。。。 明明是执行一次就退出了
|
|
返回顶楼 | |
发表时间:2011-06-16
redhat 写道 排查问题时发现了一段粗心的代码:
private static boolean test(){ int i=10; { i--; }while(i>0); return true; } 大家认真读完能给出正确结果吗? eclipse里面format一下就出来老:) private static boolean test() { int i = 10; { i--; } while (i > 0) ; return true; } |
|
返回顶楼 | |
发表时间:2011-06-16
所以while后面要加上{},在Eclipse中Format一下就ok了(自动添加{})
|
|
返回顶楼 | |
发表时间:2011-06-16
是死循环。。。
一直执行: while (i > 0) ; |
|
返回顶楼 | |
发表时间:2011-06-16
惭愧。。 如果把代码改成下面这样就能看到什么地方有问题了。 private static boolean test(){ int i=10; // { // i--; // } while(i>0); return true; }
原来在while前没有do关键字时,while前面的{}是作为一个代码块单独执行的,而后面的while(i>0);形成了一个单独的语句,这也就是前面各位说的是循环的代码了。
|
|
返回顶楼 | |
发表时间:2011-06-17
不执行i,直接返回true,因为这只是对局部变量计算,而且没有任何外部引用,返回也没有对任何变量引用,"聪明的"虚拟机可以自动优化这个地方.
|
|
返回顶楼 | |
发表时间:2011-06-17
yeah_nihao 写道 不执行i,直接返回true,因为这只是对局部变量计算,而且没有任何外部引用,返回也没有对任何变量引用,"聪明的"虚拟机可以自动优化这个地方.
执行一把,起码。 |
|
返回顶楼 | |
发表时间:2011-06-17
sgq0085 写道 怎么可能是死循环。。。 明明是执行一次就退出了
执行一把,起码。 |
|
返回顶楼 | |