`

一段趣味的代码关于 while循环的

阅读更多
排查问题时发现了一段粗心的代码:

private static boolean test(){
    int i=10;
    {
        i--;
    }while(i>0);
    return true;
}


大家认真读完能给出正确结果吗?
分享到:
评论
47 楼 sambean 2011-06-21  
do while表示看不懂啊
46 楼 葬雪晴 2011-06-18  
  {
 i++;
}


是一段普通代碼塊

int i=10;
while(i<0);


是一個死循環.
45 楼 dolwenjian 2011-06-18  
starcheney 写道
是死循环。。。
一直执行:
while (i > 0) ;


问题的关键不是 少写了do。。而是"while (i > 0) ;" 这里这个分号。。。不然就直接返回true了。
44 楼 tom&jerry 2011-06-18  
确实是死循环,已运行测试过,差点就当成do while了
43 楼 lihaibingqq789 2011-06-17  
答案是9啊。。。
42 楼 lixingwang718 2011-06-17  
{
i--;
} 

只执行了一次

while(i>0) 是当做一条语句在死循环


+1
41 楼 noasoso 2011-06-17  
private static boolean test() {
		int i = 10;
		{
			i--;
		}
		while (i > 0)
			;
		return true;
	}


关键在于while后面的分号  如果没有这个分号 当然返回true
但是现在有这个分号 肯定就是死循环了
40 楼 Technoboy 2011-06-17  
39 楼 tang_kun_cool 2011-06-17  
JAVA有{}wile()的语法?让你费解。根本就不对吗
38 楼 redhat 2011-06-17  
badboy4471 写道
根本就是跟循环一点关系都没有。不管你怎么循环返回都是true。。

对了一半,测试看看。
37 楼 badboy4471 2011-06-17  
根本就是跟循环一点关系都没有。不管你怎么循环返回都是true。。
36 楼 Ithaca 2011-06-17  
while(boolean); //多了分号
35 楼 wuyufeixue 2011-06-17  
很明显的死循环
34 楼 徐风子 2011-06-17  
靠! 我第一眼看见的时候还以为是java的语法糖, do while 循环可以不用写 do 呢。
33 楼 doubleyoung 2011-06-17  
都看出来了。。
32 楼 cenxiaobai 2011-06-17  
不是do..while..循环,让人误解。而且循环跟返回值也没什么关系。
31 楼 kjj 2011-06-17  
确切的说,这不是与wiile,是作者眼花的感觉!!!!!!!!!!!!
30 楼 redhat 2011-06-17  
thihy 写道
所以while后面要加上{},在Eclipse中Format一下就ok了(自动添加{})

这与你设置format的格式有关,并且,如果是不小心删除了do的话,你就很难发现,而且对于代码格式化,我们希望对之前的修改不要做全部格式化,只是局部格式化,这样导致有时候很难发现问题。
29 楼 redhat 2011-06-17  
sgq0085 写道
怎么可能是死循环。。。 明明是执行一次就退出了

执行一把,起码。
28 楼 redhat 2011-06-17  
yeah_nihao 写道
不执行i,直接返回true,因为这只是对局部变量计算,而且没有任何外部引用,返回也没有对任何变量引用,"聪明的"虚拟机可以自动优化这个地方.

执行一把,起码。

相关推荐

Global site tag (gtag.js) - Google Analytics