日期:2014-05-20  浏览次数:20722 次

菜鸟求大神帮忙for为什么这样走
class Fu {
boolean show(char a) {
System.out.println(a);
return true;
}
}
class Demo extends Fu {
public static void main(String[] args) {
int i=0;
Fu f=new Demo();
Demo d=new Demo();
for(f.show('A'); f.show('B')&&(i<2);f.show('C')){
i++;
d.show('D');
}
}
boolean show(char a){
System.out.println(a);
return false;
}
}
/*
A
B
*/
结果是为什么是A、B。这个
for(f.show('A'); f.show('B')&&(i<2);f.show('C')){
i++;
d.show('D');
}
该怎样执行
For java

------解决方案--------------------
这个for根本就没执行,因为for的判断条件f.show('B')&&(i<2)结果是false,for语句是否执行只和中间那个语句有关系
------解决方案--------------------
首先执行f.show('A'),这个没疑问吧
然后是f.show('B')&&(i<2),show()函数在子类里重写了,所以返回的是false,既然条件是false那for循环就不会继续执行了,也就没有后面的D和C了