第十二节.Java中控制语句-循环语句
本章用来讲解循环的使用场景以及循环使用的三种语法
循环的功能
循环用于重复执行程序中的部分逻辑代码,也就是说当程序中出现了大量的重复切有规律的代码时我们可以用循环来解决。根据不同的业务需求,JAVA提供了3中循环方式。分别是 while循环 do while循环和 for 循环三种。下面我们来介绍并使用这三种循环方式。
循环的要素
不管是哪一种循环,我们想要搞清楚和完整的使用循环都必须搞清楚四个要素。
- 初始值:循环开始时定义的一个变量,表示循环开始的标志。
- 循环条件:结果必须是一个 Boolean类型的表达式。
当条件表达式的结果为 true时开始循环。
当条件表达式的结果为 false时结束循环。
一般情况下我们会用初始值参与条件表达式。
- 循环体:重复执行的代码逻辑。
- 步长:更新初始值,使循环的条件编程false结束循环。
初始值,循环条件和循环体 三个相互作用决定了循环的次数。不管是多么复杂的循环只要是弄清楚这四个要素的关系问题都会迎刃而解。
分析一波:
循环其实就是重复去做一件事情。在生活中我们也会重复做一些事情。比如抄写某一篇文章重复十遍,这时我们在抄写文章的期间需要做一个记录,比如从1开始记录抄写次数,每抄写完一次文章的抄写次数 +1 ,直到抄写次数达到或超出了10次后结束抄写。这里可以认为 记录从1开始就是初始值,而我们继续抄写的条件就是文章抄写次数还没有到达10次可以看作是循环条件,每抄写完一次文章都需要在抄写次数上+1 就是步长,重复的抄写动作就是循环体。
while循环
语法:
// 伪代码 用来展示语法
初始值定义;
while(循环条件){
循环体;
…
步长;
}
执行规则:
当循环条件为真(true)时 开始执行 {} 内循环体和步长。然后再此判断条件,如果循环条件为真(true)时继续循环,如果条件为假(false)停止循环。
流程图:
代码演示:
public class Demo1{
public static void main(String[] args){
// while 循环演示
int x = 1; //定义变量x 初始值1
while(x <= 10){ //循环条件
System.out.println("x="+x); //条件成立,打印x的值
System.out.println("抄写第"+x+"边文章");
x++; //x进行自增
}
}
}
执行结果:
分析一波:x的初始值是1 。while后的条件x<=10 结果为true 开始循环。执行{}内的循环体和步长,输出 “x=1”之后 x++,x的值变成2。之后判断条件x<=10依然成立,继续执行循环体和步长,输出“x=2”之后x++,x的值是3。之后判断条件x<=10依然成立,继续执行 ... ... 直到输出“x=10”之后x++,x 的值变成 11 判断条件x<=10不成立循环结束。
通过对以上代码的分析,我们可以看出while循环的循环顺序。先执行初始值,而且初始值只执行一次。之后判断循环条件如果为true开始循环,执行{} 内的循环体和步长。之后又去判断条件,直到条件为false时,结束循环。
do while循环
语法:
// 伪代码 演示规则
初始值定义;
do{
循环体;
…
步长;
} while(循环条件);
执行规则:
根据上图语法,我们可以发现 do while循环,将循环条件放到了 循环体之后。这样使得do后{}内的循环体和步长无条件执行一次后,才去判断循环条件是否继续执行。
流程图:
代码演示:
public class Demo1{
public static void main(String[] args){
// do while 语法演示
int x = 1; // 初始值
do{
System.out.println("x="+x); // 循环体
x++; // 步长
}while(x<=4);// 循环条件
}
}
运行结果:
分析一波:我们观察运行结果和while的运行结果基本相同。但是他们的执行顺序其实是不同的。do while 循环是先执行循环体和步长,之后才判断条件。这就使do while 循环即便条件开始就是false ,也会执行以下循环体和步长。 我们可以将 x的初始值变成5,再次编译和执行。获得以下结果:
分析一波: 根据上边修改代码后的结果分析代码。我们将 x的初始值修改成5,x<=4 的条件已经不成立了,但是还是输出了一次5。也就是说do while循环即便一开始条件就为false也是会执行一次的,换句话说do while循环 至少执行一次。而while循环开始条件就是假的循环时无法执行的。这是while 和do while的区别。
for 循环
语法:
// 伪代码 演示语法
for(初始值定义;循环条件;步长){
循环体;
}
执行规则:
for循环的执行规则和流程与while循环的基本向同,注意初始值也只执行一次,之后的执行顺序是 循环条件,循环体,步长。条件为true 开始执行,条件为false循环结束。流程图可以参考while循环的流程图。
代码演示:
public class Demo1{
public static void main(String[] args){
// for 语法演示
for(int i=1;i<=4;i++){ // (初始值;循环条件;步长)
System.out.println("i="+i);// 循环体
}
}
}
执行结果:
分析一波:可以看出其实 while ,do while 和 for循环的结果基本相同。不过for循环和上边两个循环比较书写的格式更紧凑可读性更强。一般能确定次数的循环我们优先使用for循环。那么for循环和 while和do while 有什么不同呢?三种循环的初始值变量作用域范围不同,for循环的初始值变量定义在()内,作用域范围只在for循环后的{}之内生效。for循环结束后初始值变量的生命周期就停止了,不能再使用了。而 while和do while 的初始值变量定义再循环语句之外,生命周期和作用域范围更大,并不是只能在循环的过程中使用,循环结束之后还是可以使用的。这个不同这里我们先不做演示,记住就好。
循环中 初始值 步长 和 条件的关系
根据以上书写和执行的程序,我们大概能了解循环的次数和 初始值 步长 循环体 都是后关系的。这三个要素中的任意一个改变都可以 改变循环的次数。
代码演示: 代码较多按照 分割线 分段书写 执行
public class Demo1{
public static void main(String[] args){
// 初始值 条件 步长 关系演示
// 初始值:1 , 条件:<=4 , 步长:每次+1
for(int i=1;i<=4;i++){
System.out.println("i="+i);
}
System.out.println("----------");// 间隔线
// 初始值:10 , 条件:>=5 , 步长:每次-1
for(int i=10;i>=5;i--){
System.out.println("i="+i);
}
System.out.println("----------");// 间隔线
// 初始值:1 , 条件:<=10 , 步长:每次+3
for(int i=1;i<=10;i+=3){
System.out.println("i="+i);
}
System.out.println("----------");// 间隔线
// 初始值:100 , 条件:<=1000 , 步长:每次+300
for(int i=100;i<=1000;i+=300){
System.out.println("i="+i);
}
// 初始值:1 , 条件:<=100 , 步长:每次+1
// 自行书写代码 编译执行完成
}
}
运行结果:
break 和 continue 关键字
break 和 continue 都是在循环中使用,用来改变循环执行顺序的关键字。
break有中断的意思,表示跳出循环结束了整个循环的执行。
continue有继续的意思,表示的是跳过本次循环中continue之后的代码,然后去执行步长,开始下一次循环。
代码演示:
public class Demo1{
public static void main(String[] args){
// break 演示
for(int i=1;i<=10;i++){
if(i==5){
break;
}
System.out.print(i+"\t");
}
// continue 演示
System.out.println();
for(int i=1;i<=10;i++){
if(i==5){
continue;
}
System.out.print(i+"\t");
}
}
}
执行结果:
分析一波:
第一个循环中我们使用了 break,当i的值是5的时候 if 条件成立,执行了break,我们就跳出结束了循环。第二个循环中我们使用了continue,当i的值是5的时候,if条件成立,执行了continue跳过了输出5的语句,之后执行步长。继续执行了下一次循环。 直到条件为false结束了循环。
到这里循环中的基础语法讲解完毕
总结 三种循环的不同
while 循环和do…while循环的不同
我们从三个角度来分析一些 两个循环的区别。
代码书写:
while循环的书写时是先写判断条件之后是循环体和步长
do while 循环先书写循环体和步长后 书写条件
执行顺序:
while 循环先执行循环条件,后执行循环体
do while 循环先执行循环体和步长 ,后执行循环条件
获得结果:
while循环和do while循环的执行结果,如果开始的循环条件是true,结果没有不同。但是如果开始的条件是false,while循环将不执行,而do while循环至少会执行一次。
for循环的初始值和 while ,do…while的区别
for循环的初始值和 while,do while的区别在于他们生命周期和作用域。
while和do while 的初始值作用域并不是只在循环中生效。循环结束后变量也是生效的。
而for循环的初始值是定义在for循环内 ,只在循环的时候生效。出了循环生命周期就结束了。所以除了嵌套的情况外多个for循环的初始值变量名相同是可以反复的使用。