引用自指定教材《Java从入门到精通》,第4章 java语言基础,页码区间<66,75>页
1.for循环的使用 2.while循环的使用 3.do...while循环的使用
1.掌握for循环的执行流程 2.掌握while循环执行流程 3.do...while循环执行流程 4.break和continue的区别
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
格式:
1 for(初始化表达式①; 布尔表达式②; 步进表达式④){ 2 循环体③ 3 }
执行流程
执行顺序:①②③④>②③④>②③④…②不满
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况
1 public static void main(String[] args) { 2 //控制台输出10次HelloWorld,不使用循环 3 System.out.println("HelloWorld"); 4 System.out.println("HelloWorld"); 5 System.out.println("HelloWorld"); 6 System.out.println("HelloWorld"); 7 System.out.println("HelloWorld"); 8 System.out.println("HelloWorld"); 9 System.out.println("HelloWorld"); 10 System.out.println("HelloWorld"); 11 System.out.println("HelloWorld"); 12 System.out.println("HelloWorld"); 13 System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"); 14 //用循环改进,循环10次 15 //定义变量从0开始,循环条件为<10 16 for(int x = 0; x < 10; x++) { 17 System.out.println("HelloWorld"+x); 18 } 19 }
循环练习:使用循环,计算1-100之间的偶数和
1 public static void main(String[] args) { 2 //1.定义一个初始化变量,记录累加求和,初始值为0 3 int sum = 0; 4 //2.利用for循环获取1‐100之间的数字 5 for (int i = 1; i <= 100; i++) { 6 //3.判断获取的数组是奇数还是偶数 7 if(i % 2==0){ 8 //4.如果是偶数就累加求和 9 sum += i; 10 } 11 } 12 //5.循环结束之后,打印累加结果 13 System.out.println("sum:"+sum); 14 }
while循环语句格式:
1 初始化表达式① 2 while(布尔表达式②){ 3 循环体③ 4 步进表达式④ 5 }
执行流程
执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。
while循环输出10次HelloWorld
1 public static void main(String[] args) { 2 //while循环实现打印10次HelloWorld 3 //定义初始化变量 4 int i = 1; 5 //循环条件<=10 6 while(i<=10){ 7 System.out.println("HelloWorld"); 8 //步进 9 i++; 10 } 11 }
while循环计算1-100之间的和
1 public static void main(String[] args) { 2 //使用while循环实现 3 //定义一个变量,记录累加求和 4 int sum = 0; 5 //定义初始化表达式 6 int i = 1; 7 //使用while循环让初始化表达式的值变化 8 while(i<=100){ 9 //累加求和 10 sum += i ; 11 //步进表达式改变变量的值 12 i++; 13 } 14 //打印求和的变量 15 System.out.println("1‐100的和是:"+sum); 16 }
do...while循环格式
1 初始化表达式① 2 do{ 3 循环体③ 4 步进表达式④ 5 }while(布尔表达式②);
执行流程
执行顺序:①③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句
④循环后,循环变量的变化情况
输出10次HelloWorld
1 public static void main(String[] args) { 2 int x=1; 3 do { 4 System.out.println("HelloWorld"); 5 x++; 6 }while(x<=10); 7 }
do...while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的 循环具有一定的风险性,因此初学者不建议使用do...while循环。
1 public static void main(String[] args){ 2 do{ 3 System.out.println("无条件执行一次"); 4 }while(false); 5 }
for 和 while 的小区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继
续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消
失,能够提高内存的使用效率。
在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while
循环结构的表达式不同
do-while循环结构表达式为:do{循环体;}。
for循环的结构表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体}。
while循环的结构表达式为:while(表达式){循环体}。
执行时判断方式不同
do-while循环将先运行一次,因为经过第一次do循环后,当检查条件表达式的值时,其值为 不成立时而会退出循环。保证了至少执行do{ }内的语句一次。
for循环执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号{}可以省略,执行完中间循环体后接着执行末尾循环体。
while循环执行时当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)
执行次数不同
do-while循环是先执行后判断,执行次数至少为一次。
for循环是先判断后执行,可以不执行中间循环体。
while循环也是先判断后执行,可以不执行中间循环体。
执行末尾循环体的顺序不同
do-while循环是在中间循环体中加入末尾循环体,并在执行中间循环体时执行末尾循环体。
for循环的中间循环体在条件判断语句里,执行末尾循环体后自动执行中间循环体。
while循环的末尾循环体也是在中间循环体里,并在中间循环体中执行。
使用场景:终止switch或者循环
在选择结构switch语句中
在循环语句中
离开使用场景的存在是没有意义的
1 public static void main(String[] args) { 2 for (int i = 1; i<=10; i++) { 3 //需求:打印完两次HelloWorld之后结束循环 4 if(i == 3){ 5 break; 6 } 7 System.out.println("HelloWorld"+i); 8 } 9 }
使用场景:结束本次循环,继续下一次的循环
1 public static void main(String[] args) { 2 for (int i = 1; i <= 10; i++) { 3 //需求:不打印第三次HelloWorld 4 if(i == 3){ 5 continue; 6 } 7 System.out.println("HelloWorld"+i); 8 } 9 }
死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}
在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并 不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用 到跳出语句了。
所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数
嵌套循环格式
1 for(初始化表达式①; 循环条件②; 步进表达式⑦) { 2 for(初始化表达式③; 循环条件④; 步进表达式⑥) { 3 执行语句⑤; 4 } 5 }
嵌套循环执行流程:
执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
外循环一次,内循环多次。
比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。
练习:使用嵌套循环,打印5*8的矩形
1 public static void main(String[] args) { 2 //5*8的矩形,打印5行*号,每行8个 3 //外循环5次,内循环8次 4 for(int i = 0; i < 5; i++){ 5 for(int j = 0; j < 8; j++){ 6 //不换行打印星号 7 System.out.print("*"); 8 } 9 //内循环打印8个星号后,需要一次换行 10 System.out.println(); 11 } 12 }
1.for循环的使用
2.while的使用
3.do...while的使用
4.三个循环的区别
5.break和continue的区别