关于for循环的细节问题

学过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报错。

总结:这里涉及到了变量的作用于问题:test2中的变量i作用域是从方法开始到方法的结束,作用于整个方法体,而test3中变量i的作用是从for循环的初始化变量开始,到循环执行完,立即被垃圾回收,再继续执行时,无法解析变量。

4.无限循环

private static void test4(){
	for (; ;) {
		//执行循环体
	}
}
private static void test5(){
	while(true){
		//执行循环体
	}
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值