while循环
语法格式:
while(布尔表达式){
语句体;
}
先判断括号里的布尔表达式,若为true,则执行后面的语句体;
在判断括号里的布尔表达式,若为true,则执行后面的语句体
直到为false,则不执行后面的语句体;
相关代码
package com.qf.a_sanmu;
public class Demo3 {
public static void main(String[] args) {
//打印4遍的中午吃烤羊排,使用while循环
//无论任何循环 都要必须有三个条件:
//1.初始化条件
//2.循环条件
//3.终止条件
/**
* 分析代码,主要是分析执行的流程:
* i=0 0<4 true 执行大括号里面的代码 打印第一次的 中午吃烤羊排 i++
* i=1 1<4 true 执行大括号里面的代码 打印第二次的 中午吃烤羊排 i++
* i=2 2<4 true 执行大括号里面的代码 打印第三次的 中午吃烤羊排 i++
* i=3 3<4 true执行大括号里面的代码 打印第四次的 中午吃烤羊排 i++
* i=4 4<4 false 就不再执行大括号中的代码了!!!
*/
//1.声明一个变量
int i = 0;//初始化条件
while (i < 4) {// i < 4 终止条件
System.out.println("中午吃烤羊排");
i++;//i++ 是循环条件 自身加1
}
}
}
do_while循环
语法结构:
do{
语句体;
}while(布尔表达式)
执行流程:首先代码执行到do 然后执行do后面大括号中的语句体,再去判断while后面的布尔表达式
如果布尔表达式为false的话,就不再执行do后面的语句体了,相当于循环结束
如果布尔表达式为true,再回到do 去执行后面的语句体,执行完语句体之后,再判断while后面的布尔表达式,如果布尔表达式为true的话,就再执行do后面的语句体,然后再去判断while布尔表达式,直到为false的时候,循环结束了
相关代码
package com.qf.a_sanmu;
public class Demo8 {
public static void main(String[] args) {
//打印 3遍的 一枝红杏出墙来
/**
* i=0 打印第一遍的一枝红杏出墙来 i++ i=1 while后面的布尔表达式 1 <3 true
* 打印第二遍的一枝红杏出墙来 i++ i=2 while后面的布尔表达式 2< 3 true
* 打印第三遍的一枝红杏出墙来 i++ i=3 while后面的布尔表达式3 <3 false 循环结束
*
*/
int i = 0;
do {
System.out.println("一枝红杏出墙来");
i++;
} while (i < 3);
//do-while循环 和while循环的不同之处?
//while 先判断 再执行 do-while 先执行再判断
}
}
for循环
语法格式
for(表达式1;布尔表达式;表达式2){
语句体;
}
表达式1: 初始化的条件
表达式2: 终止条件
表达式3: 循环条件
执行流程: 首先执行表达式1,再执行表达式2,如果布尔表达式2为true,执行大括号中语句体。然后再执行表达式3,再执行表达式2,再次判断布尔表达式2,直到为false,就不执行语句体。就意味着循环结束
相关代码
package com.qf.a_sanmu;
public class Demo10 {
public static void main(String[] args) {
//打印10以内的奇数
/**
* i=1 1<11 执行大括号中的if语句 i%2!=0 true 执行if语句大括号中的代码 sout(1) i++
* i=2 2<11 执行大括号中的if语句 i%2!=0 false 不再执行if语句后面的大括号中的代码了 i++
* i=3 3<11 ...
*/
//循环和if的嵌套
for (int i = 1; i < 11; i++) {
if (i % 2 != 0) {
System.out.println(i);
}
}
System.out.println("=======");
for (int i = 1; i < 11; i+=2) {
System.out.println(i);
}
}
}
for嵌套
语法结构:
for(表达式1;布尔表达式;表达式2){
for(表达式1;布尔表达式;表达式2){
语句体;
}
}
执行顺序:
前提是循环
一个循环里面套另外一个循环。秉承着一个特点: 从外层循环先进入到内层循环,然后 内存循环先结束
然后再回到外层循环,再进入到内层循环,内层循环结束,再会带外层循环
相关代码
package com.qf.a_sanmu;
public class Demo13 {
public static void main(String[] args) {
//System.out.println("****");
//System.out.println("****");
//System.out.println("****");
//for (int i = 0; i < 4; i++) {
//System.out.print("*");
//}
//for (int i = 0; i < 3; i++) {
****
//System.out.println("****");
//}
/**
* i = 0 0< 3 true 执行大括号中的内层的for循环
* j=0 0<4 true 打印1个* j++
* j=1 1<4 true 打印1个* j++
* j=2 2<4 true 打印1个* j++
* j=3 3<4 true 打印1个* j++
* j=4 4<4 false 内层for循环结束 立马换行 i++
* i = 1 1<3 true 再次执行大括号中的内层的for循环
* j=0 0< 4 true 打印1个* j++
* j=1 1<4 true 打印1个* j++
* j=2 2<4 true 打印1个* j++
* j=3 3<4 true 打印1个* j++
* j=4 4<4 false 内层循环结束 立马换行 i++
* i=2 2<3 true 再次执行大括号中的内层的for循环
* j=0 0< 4 打印1个* j++
* ...
* j=3 3<4 true 打印1个* j++
* j=4 4<4 false 内层循环结束 立马换行 i++
* i=3 3<3 false 整体循环就结束了
*/
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {//打印的是4个*
System.out.print("*");
}
System.out.println();//换行
}
//总结: 最外层for循环 控制的是 行 最内层控制的 是 列
}
}
break和continue的区别
break:
用于switch_case 与 循环之中,结束循环
continue:
用于循环之中,结束本次循环,进入下一次循环