一、程序的执行流程
1.顺序结构
默认,从上往下,从左至右,一条语句一条语句的执行。
2.选择结构(分支结构)
if语句
switch语句
3.循环结构
for
while
do while
二、选择结构的语句
选择结构,也叫做分支结构
使用场景:当一件事情,有多种可能发生的情况,但是每次只能发生一种情况。最后发生哪种情况根据条件来选择。
1.if语句
(1)单分支
一个条件,一种情况。
语法:
if(boolean条件){
//当条件为true时要执行的语句组。
}
执行流程:
先执行条件;
条件为true,执行语句组,然后结束if。
条件为false,直接结束if。
image.png
System.out.println("begin---");
int week=7;
if(week==7){
System.out.println("明天休息");
}
System.out.println("end---");
(2)双分支
一个条件,两种情况
语法:
if(boolean条件){
//当条件为true时要执行的语句组1。
}else{
//当条件为false时要执行的语句组2。
}
执行流程:
先执行条件;
条件为true,执行语句组1,然后结束if。
条件为false,执行语句组2,然后结束if。
image.png
System.out.println("begin---");
int week=2;
if(week==7){
System.out.println("明天休息");
}else{
System.out.println("继续学习");
}
System.out.println("end---");
(3)多分支
n-1个条件,n种情况。
语法:
if(boolean条件1){
//当条件为true时要执行的语句组1。
}else if(条件2){
//当条件2为true时要执行的语句组2。
}else if ....
....
else if(条件n-1){
//当条件n-1为true时要执行的语句组n-1。
}else{
//当以上条件都不成立,执行语句组n。
}
执行流程:
先执行条件1;
条件1为true,执行语句组1,然后结束if。
条件1为false,执行条件2。
条件2为true,执行语句组2,然后结束if。
条件2为false,执行条件3。
.....
条件n-1为true,执行语句组n-1,然后结束if。
条件n-1为false,执行语句组n。
image.png
System.out.println("begin---");
int week=7;
if(week==1){
System.out.println("体能课");
}else if(week==2){
System.out.println("舞蹈课");
}else if(week==3){
System.out.println("书法课");
}else if(week==4){
System.out.println("美术课");
}else if(week==5){
System.out.println("篮球课");
}else if(week==6){
System.out.println("英语课+舞蹈课+逻辑思维课");
}else{
System.out.println("语言课");
}
System.out.println("end---");
2.switch语句
(1)语法:
switch(表达式){
case 常量表达式1:
语句组1;
[break;]
case 常量表达式2:
语句组2;
[break;]
。。。
case 常量表达式n-1:
语句组n-1;
[break;]
default:
语句组n;
}
强调:switch表达式只能返回byte、short、char、int、String类型。
(2)执行流程:
先执行switch的表达式;
然后执行第一个case。
如果表达式的结果和常量表达式1相等,那么执行语句组1.
如果表达式的结果和常量表达式1不相等,执行下一个case。
。。。
如果以上都不匹配,执行缺省语句组。
image.png
System.out.println("begin--");
Scanner sc=new Scanner(System.in);
int week=sc.nextInt();
switch (week){
case 1:
System.out.println("今天星期一,我要上学");
break;
case 2:
System.out.println("今天星期二,我要打游戏");
break;
case 3:
System.out.println("今天星期三,我要上班");
break;
case 4:
System.out.println("今天星期四,我要考试");
break;
case 5:
System.out.println("今天星期五,我要按摩");
break;
case 6:
System.out.println("今天星期六,我要洗脚");
break;
case 7:
System.out.println("今天星期日,我要钓鱼");
break;
default:
System.out.println("你输的星期不对!!");
}
System.out.println("end----");
(3)关于break的问题
break作用:结束switch语句。
如果语句组中没有执行break,那么程序会向下执行下一个语句组,直到遇到break或后面的语句组全部执行完毕,结束switch。
System.out.println("begin--");
Scanner sc=new Scanner(System.in);
int week=sc.nextInt();
switch (week){
case 1:
System.out.println("今天星期一,我要上学");
break;
case 2:
System.out.println("今天星期二,我要打游戏");
break;
case 3:
System.out.println("今天星期三,我要上班");
break;
case 4:
System.out.println("今天星期四,我要考试");
//break;
case 5:
System.out.println("今天星期五,我要按摩");
//break;
case 6:
System.out.println("今天星期六,我要洗脚");
//break;
case 7:
System.out.println("今天星期日,我要钓鱼");
// break;
default:
System.out.println("你输的星期对!!");
}
System.out.println("end----");
(4)switch使用场景
只能用于条件中的值是可以枚举的时候。
总结:如果匹配成功后 但没有break 那就没有结束 但是不会再比对case条件 会执行下个case的语句 直到遇到break或者代码结束。
三、循环结构的语句
使用场景:
重复的操作,需要执行多遍。
1.for
语法:
for(初始化表达式;boolean条件;迭代语句){
//循环体:定义重复的操作,只需定义一遍。
}
执行流程:
先执行初始化表达式;
然后执行boolean条件;
如果条件为true,执行循环体,然后执行迭代语句;
然后执行boolean条件;
如果条件为true,执行循环体,然后执行迭代语句;
。。。。
直到boolean条件为false,结束for。
image.png
System.out.println("begin---");
for(int i=1;i<=100;i++){
System.out.println("我再也不迟到了"+i);
}
System.out.println("end----");
2.while
语法:
while(boolean条件){
//循环体
}
执行流程:
先执行条件;
条件为true,执行循环体,然后在执行条件。。。。。
一直到条件为false,结束while。
image.png
System.out.println("begin---");
int i=1;
while(i<=100) {
System.out.println("我再也不迟到了" + i);
i++;
}
System.out.println("end----");
3.do while
语法:
do{
//循环体
}while(boolean条件);
执行流程:
先执行循环体;
然后执行条件,条件为true,在执行循环体,然后在执行条件。。。。。
一直到条件为false,结束do while。
image.png
注意:do while 至少执行一次。
如果大于0次的情况,(前提:条件和循环体相同)三种循环语句执行的结果是一样的。
System.out.println("begin---");
int i=1;
do{
System.out.println("我再也不迟到了" + i);
i++;
}
while(i<=100);
System.out.println("end----");
四、流程跳转语句
1.break
(1)用在switch语句中
表示结束switch语句
(2)用在循环语句中
结束后面的所有循环
for (int i = 0; i < 10; i++) {
if(i==5){
break;
}
System.out.println("i love java"+i);
}
2.continue
只能用在循环体中
结束本次循环,然后进入下一次循环。
for (int i = 0; i < 10; i++) {
if(i==5){
continue;
}
System.out.println("i love java"+i);
}
五、多重循环
打印九九乘法表
(1)打印九行
(2)每一行:打n个
//打九行
for (int i = 1; i <=9 ; i++) {
//打印第i行
//打印i个
for (int j = 1; j <=i ; j++) {
System.out.print(j+"*"+i+"="+(j*i) +" ");
}
//换行
System.out.println();
}
网友评论