学过java的朋友们,对于for循环应该不陌生,本文旨在对for循环中的细节做一些介绍。
首先,for循环的语法格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式){
//待执行的循环体语句
}
1.for循环的执行顺序
接下来,看一段小程序,如下:
public static void test(){
for(int i=0;i<3;i++){//依次为标识为1,2,3
System.out.println("b"+i);//标识为4
}
}
这里,把执行for循环中三条语句分别表示为1,2,3,4,那么,它们的执行语句顺序是怎么样的?按照1->2->4->3->2->4->3->2->4,i足够大时,继续循环下去。2.for循环的初始化表达式,循环条件表达式
public static void test1(){
for(System.out.println("a");System.out.println("b");System.out.println("c")){
System.out.println("d");
}
}
乍一看这个程序,感觉很别扭,如果是用Eclipse,会报红叉号,提示原因:Type mismatch: cannot convert from void to boolean,即void不能转换为boolean,类型不匹配。当把报错的该句替换为true,再去编译,运行,程序会一直输出d。
总结:1.循环条件表达式无论是什么,其结果必须是boolean型,才能保证循环的执行。
2.注意到,习惯了定义变量,发现初始化表达式可以是合法的一条语句。
3.for循环中定义变量
private static void test2(){
int i=0;
for (; i<3;i++) {
System.out.println("b"+i);
}
System.out.println("b"+i);
}
private static void test3(){
for (int i=0; i<3;i++) {
System.out.println(""+i);
}
System.out.println("b"+i);//这个地方编译器报错,i cannot be resolved to a variable
}
test3方法中是平时的习惯写法,而test2方法将变量i定义在for循环外面,结果test3报错。
4.无限循环
private static void test4(){
for (; ;) {
//执行循环体
}
}
private static void test5(){
while(true){
//执行循环体
}
}