黑马程序员技术交流社区
标题:
循环问题·
[打印本页]
作者:
攻城狮
时间:
2012-1-21 15:43
标题:
循环问题·
本帖最后由 spiritleak 于 2012-1-21 17:31 编辑
class Demo1
{
public static void main(String []args)
{
int i = 0, j = 5;
tp: for (;;)//tp: 标号 for (;;) 无限循环
{
i++; //i++ 后i=1
for(;;)
{
if(i > j--)
//if(1>5--) 就执行 break tp;跳出外循环 这时j=4 因为-- 优先级比>高 所以先运算 继续内循环
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j); //i=1,j=-1;
}
}
综上分析 当内循环 j--到0的时候就应该执行到 break tp;(1>0)
为什么结果是i=1 j=-1呢?
作者:
孙海亮
时间:
2012-1-21 16:34
int i=0;那么执行i++;这句时i 的值还是0,因为i++是先拿i 的值进行运算,运算结束再将i 的值自增1 。然后就执行到for循环,if(i>j--)这句里的i 还是为0.那么当j为0时,0不大于0所以j 还得继续自减一次。当j =-1时判断条件不满足,这时才执行break tp;
所以i=0;j=-1
作者:
攻城狮
时间:
2012-1-21 17:28
孙海亮 发表于 2012-1-21 16:34
int i=0;那么执行i++;这句时i 的值还是0,因为i++是先拿i 的值进行运算,运算结束再将i 的值自增1 。然后就 ...
非常感谢 懂了 意思就是要等内循环运算结束后外循环的 i 才会++ 对吧 嘿嘿
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2