循环
循环的定义: 一直不断的做一个业务,直到指定的条件不满为止,才停止做该业务。
Java语言里面的一个有三大循环分别是 while循环,do-while,for循环。
while循环
while循环的执行步骤
- 先判断循环的条件
- 条件的运算结果为true
- 执行循环体里面的语句库
- 再回到循环条件
- 再次判断,如果为循环条件的运算结果为false,则结束循环,否则执行步骤3,步骤4.
注意:在使用循环的时候一定要避免死循环的出现,死循环出现的条件是条件表达式的运算结果一直为true.
循环的注意事项:
循环一开始应该有一个初始化状态的变量,这个变量必须参与bool表达式运算,如果成功的执行循环体,该变量的值应该要做更新操作,否则可能会出现死循环的问题。
循环里面使用break和continue关键字
break:如果break关键字出现在循环体里面,表示结束该循环,该循环不会在被执行
continue: 如果continue关键字出现在循环体里面,表示结束本次的循环,程序会继续下一次循环(程序会马上跑到循环条件去再次判断是否执行循环)
do-while循环
do-while循环的执行流程如下两个图所示:
程序一开始会去执行语句块的语句,然后判断循环条件,如果循环条件的表达式值为true的时候,那么会去再次的执行语句块,直到循环条件的值为false为止。
注意:while 循环和do-while循环的区别
while 首先是判断条件表达式的值,再判断是否需要执行语句块,而对于do-while来说,会先去执行语句块的逻辑,再去判断循环条件;do-while与while循环最大的区别是 无论循环条件的值是否是true,语句块都会至少被执行一次。
for循环
比较while 和 do-while循环会发现,每一次的更新的初始化变量都是在循环以外定义的,在有些实际的业务中,需要确定每次循环的次数;这种需求的刚好满足for的需求。
for循环的格式
for(表达式1;表达式2(逻辑表达式);表达式3){
语句块;
}
执行逻辑:
1、先执行表达式1;
2、执行表达式2(逻辑表达式),如果表达式2的值为true,那么语句块将会被执行,否则退出循环。
3、执行语句块;
4、执行表达式3;
5、执行表达式2;
6、重复执行步骤2到6直到表达式2的值为false为止
注意: 表达式1只会被执行一次。表达式2是一个逻辑表达式,该表达式运算的结果只有两个可选,分别是true或者是false.
1、使用for循环来求一个数的阶乘.
执行逻辑
2、使用for循环求1到n的和
3、使用for循环打印九九乘法表
多重循环问题(循环的嵌套)
多重循环需要注意的是:外层循环执行一次,内层循环执行多次。
/**
* 使用for循环打印九九乘法表
* 步骤:
* 应该需要使用到循环嵌套
* 第一个循环控制行
* 第二个循环控制列
* 循环体将打印 行和列的乘积,如果打印到行的结尾应该
* 输出一个回车(换行)
*/
//第一个for循环控制行变化
for (int i = 1; i <= 9 ; i++) {
//第二个for循环控制列
for (int j = 1; j <= i ; j++) {
/**
* 注意 println和print的区别
* 前者输出会换行 而后者不会
*/
System.out.print(j+"x"+i+"="+i*j+"\t");
}
System.out.println();
}
循环小节
java语言里面的循环类型一共有3种,分别是 while循环,do-while循环, for循环,while和do while循环有相似之处就是循环的初始化变量需要在循环外面定义,不同点是,while一开始执行的时候直接判断逻辑表达式,如果逻辑表达式的值为true,才去执行循环体,否则结束while循环;而do-while循环则至少执行一次循环体之后才去判断逻辑表达式进而判断是否要继续下一次循环。而for则是一个确定次数的循环,可以明确的直到循环是第几次(用于那些循环次数已经确定的业务问题)。
循环体里面出现break和continue关键字的作用,break用于结束整个循环,而continue用于结束本次循环,直接跳到逻辑表达式部分,通过执行逻辑表达式判断是否继续下一次循环(也就是结束本次的循环,重新开始下一次循环)。
三种循环的死循(一定要避免 但是有些时候某些业务问题需要使用死循才能解决。)
while循环的死循环:
while(true){
语句块
}
do-while循环的死循环:
do{
语句块
}while(true);
for循环的死循环
for(;;){
语句块
}
//可以讲for循环拆分
int i = 0;
for (; i <100 ; ) {
System.out.println("hello");
i++;
}