public class j1 {
static boolean foo(char c){
System.out.print(c);
return true;
}
public static void main(String []args){
int i=0;
for(foo('A');foo('B')&&(i<2);foo('C'))
{
i++;
foo('D');
}
}
}得到什么样的结果,为什么会是这个结果。能详细说下执行顺序么
static boolean foo(char c){
System.out.print(c);
return true;
}
public static void main(String []args){
int i=0;
for(foo('A');foo('B')&&(i<2);foo('C'))
{
i++;
foo('D');
}
}
}得到什么样的结果,为什么会是这个结果。能详细说下执行顺序么
接着foo(B),输出B,返回true
for条件 true && (i<2) 为true,满足循环条件,进入循环体
i++变成1
foo(D),输出D
然后循环累增处理,执行foo(C)输出C
然后继续判断循环条件,foo(B)输出B,i<2为true,for循环条件成立,进入循环体
i++变为2
foo(D)输出D
然后循环累增处理,执行foo(C)输出C
然后继续判断循环条件,foo(B)输出B,i<2为false,循环结束
所以程序输出结果是
ABDCBDCB
首先是赋初值的foo('A')返回A
然后判断条件foo('B')&&(i<2);返回B;且成立;
进入循环体,执行i++;和foo('D')返回D,i值变为1;
然后进入循环控制变量的foo('C')返回C;此时一个循环完成,进入下一循环:
判断条件foo('B')&&(i<2);返回B;成立;
进入循环体,执行i++;和foo('D')返回D,i值变为2;
然后进入循环控制变量的foo('C')返回C;此时第二个循环完成,进入下一循环:
判断条件foo('B')&&(i<2);返回B;但foo('B')&&(i<2)条件不成立,for循环结束!
for (initialization; condition; modification) {
// 代码体
}
先执行initialization,然后执行代码体,然后执行modification,
然后再执行condition,若满足条件则再执行代码体,然后依此类推;若
不满足条件则跳出for语句。
还有,楼主对&&和||条件判断的所谓“优化”知道吧,比如:
condition1&&condition2,若是condition1为假则condition2就不会执行;
condition1||condition2,若是condition1为真则condition2就不会执行;