站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题for(;;i++)这样写怎么理解

for(;;i++)这样写怎么理解

摘要: for(;;i++)这样写怎么理解


public class FooBar{
public static void main(String[] args){
int i=0,j=5;
4) tp:
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at line 4
Answer:B
我想问为什么 for(;;i++)这句话没有被执行?


for(;;--j)
执行了啊,所以最后j才会变成-1啊,这个for是条件永远成立的循环,通过里面的break来跳出循环啊


那么为什么j一直0,不是j++吗


题目上是--j,就是说for后面括号里面会一直在做j-1,直到在for中i>j,也就是说j<0(即j=-1)时,循环通过break强制退出。

System.out.println("i="+i+",j="+j); 代表的是输出"i="加上i的值,然后再加上"j="再加上j的值。


for(;;--j)
if(i>j)break tp
相当于
for(j=5;j>=i;--j)

我怎么没有看到i++ 啊
你不是说System.out.println("i="+i+",j="+j); 这里的吧!
这里的加 不是+1;只是连接起来的符号罢了!


你要理解:++i和--i、i++和i-- 的區別。


public class FooBar{
public static void main(String[] args){
int i=0,j=5;
4) tp: for(;;i++){
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at l
再贴一遍原题



有i++的呀


原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。



哦 这样啊 那我给你个解释吧
关于for循环的三个条件的执行顺序是这样的:
1.初始化
2.比较条件
3.执行循环体
4.改变值
所以对于这个程序 在执行
for(;;--j)
if(i>j)break tp
的时候 i的值还是0;但是由于break tp在内层循环中 所以当条件i>j满足时就直接退出tp而不进行i++了
所以答案应该是 i=0,j=-1


windproof() ( ) 信誉:100 Blog 2006-10-12 8:19:50 得分: 0

原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。



为什么++i就选a阿?







选B呀


↑返回目录
前一篇: 请问..有什么办法让父类去调用子类的方法
后一篇: 过滤器的问题!