1、程序控制流程介绍:
在程序中,程序运行的流程控制决定程序是如何执行的是我们必须掌握的,主要有三大流程控制语句。
1⃣️:顺序控制:程序自上而下逐行执行,中间没有任何判断和跳转。
2⃣️:分支控制;
3⃣️:循环控制。
2、分支控制 if-else:让程序有选择的执行,分支控制有三种:
1⃣️:单分支:if(条件表达式){
执行代码快;//(可以有多条语句)
}
说明:当条件表达式为ture时,就会执行{}的代码。如果false就不执行。特别说明:如果{}中只有一条语句,则可以不用{}。
例题1:
2⃣️:双分支:当条件表达式成立,即执行代码快1,否则执行代码快2.
if(条件表达式){
执行代码块1;
}else{
执行代码快2;
}
例题2
3⃣️:多分支:
if(条件表达式1){
执行代码块1;
}else if(条件表达式2)
{
执行代码快2;
}
.....
else{
执行代码块n;
}
例题三
说明:
1⃣️:条件表达式1成立时,即执行代码块1;
2⃣️:如果表达式1不成立,才去判断表达式2是否成立;
3⃣️:如果表达式2成立,就执行代码块2;
4⃣️:以此类推,如果所有的表达式都不成立则执行else的代码块,注意:只能有一个执行入口。
5⃣️:多分支可以没有else的代码块,如果所有的表达式都不成立则一个执行入口都没有
6⃣️:如果有else,且所有的表达式都不成立,则默认执行else代码块。
3、嵌套分枝:
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。规范:在实际开发中最好不要超过三层。
语法:
if( ){
If( ){
//if-else...
}else{
//if else
}
}
}
例题四
4、switch分支结构:
基本语法:
switch(表达式){
case 常量1://当表达式等于常量1的时候,当....时候
语句块1;break;//break;跳出switch结构
case 常量2
语句块2;break;
.....
case 常量n:
语句块n;break;
default:
default语句块;break;
}
例题四
1⃣️:switch关键字,表示switch分支;
2⃣️:表达式,对应一个值;
3⃣️:case常量1:当表达式的值等于常量1,就执行语句块1
4⃣️:break;表示退出switch;
5⃣️:如果和case常量1匹配,就执行语句块1,如果没有匹配,就继续匹配case常量2
6⃣️:如果一个都没有匹配上,就执行default
7⃣️:穿透:当执行语句块1后有break;语句时程序会跳出switch语句,而没有break;语句时会继续执行语句块2(此时不会判断表达式的值是不是等于case2)以此类推直到出现break;或default语句。
5、switch分支结构细节讨论:
1⃣️:表达式数据类型,应和case后的常量类型一致或者是可以自动转化可以相互比较的类型,比如:输入的是char而常量是int;
2⃣️:switch(表达式)中表达式的返回值必须是(byte,short,int,char,String,enum枚举)类型数据;
3⃣️:case子句中的值必须是常量,而不能是变量;(子句中的值必须时具体值或常量表达式)
4⃣️:default子句是可选的,当没有匹配的case时,执行default;
5⃣️:break语句用来在执行一个case分支后使程序跳出switch语句块,如果没有写break;,程序会执行到switch结尾,除非遇到break;。如果switch语句没有default子句,又没有任何匹配的常量,则没有输出。
6、switch和if的比较:
1⃣️:如果判断的具体数值不多,而且符合byte,short,int,char,enum,String这六种类型。虽然两个语句都可以使用,建议使用switch;
2⃣️:其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广(上下左右,男女,星期,季节,用switch看起来更简洁,判断区间结果时bealoon值用if else会更好)
7、for循环控制:
基本语法:
for(循环变量初始化;循环条件;循环变量迭代){
循环操作语句;//(可多条,可一条)
}
for循环说明:
1⃣️:for 有四要素:1.循环变量初始化,2.循环条件,3.循环操作,4.循环变量迭代
2⃣️:for关键字,表示循环控制;
3⃣️:循环操作,这里有多条语句,也就是我们需要循环执行的代码。
4⃣️:如果循环操作(语句)只有一条语句,可以省略{}建议不要省略。
例题五:
8、for循环的注意事项和细节:
1⃣️:循环条件是返回一个布尔值的表达式
for(int i=1;i<=10;i++)
不管循环条件中写的有多复杂返回值一定是bealoon型。
2⃣️:for(;循坏判断条件; )中的初始化和变量迭代可以写到其他地方,但两边的分号不能省略。如果一个变量在for循环结束后继续使用,那么这个变量一定要在for循环之前定义,for循环内定义的变量只能在for循环内定义。
3⃣️:循环初始值可以有多条初始化语句,但要求类型一致,并用逗号隔开;循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
9、while循环控制:
循环变量初始化;
while(循环条件){
循环体(语句);
循环变量迭代;
}
例题六
说明:
1⃣️:while循环也有四要素;
2⃣️:只是四要素放的位置和for不一样
10、while循环控制注意事项和细节说明:
1⃣️:循环条件是返回一个布尔值的表达式;
2⃣️:while循环是先判断在执行语句。
11、do...while循环控制:
循环变量初始化
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
说明:
1⃣️:do...while是关键字;
2⃣️:也有循环四要素,只是位置不一样;
3⃣️先执行,再判断,也就是说,一定会执行一次;
4⃣️:最后有一个分号;
12、do...while循环控制流程:
例题七
13、do...while循环控制注意事项细节说明:
1⃣️:循环条件是返回一个布尔值的表达式;
2⃣️:do...while循环是先执行,再判断
例题八
14、多重循环控制(重点!难点!)
介绍:
1⃣️:将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do...while均可以作为外层循环和内层循环。【建议一般使用两层,最多不要超过三层,否则,代码的可读性很差】
2⃣️:实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的档次循环,开始下一次的循环;
3⃣️:设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。(多重循环的循环次数等于所有循环的次数的乘积)。
例题九经典例题打印空心金字塔:
15、跳转控制语句——continue:
基本介绍:
用于终止某个语句块的执行,一般使用在switch或循环中。
基本语法:
{
......
break;
......
}
16、break;细节注意事项label标签:
break;语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。
break;标签解读:
1⃣️:break;语句可以指定退出哪层(后面可以带一个指定标签的名称);
2⃣️:lable1是标签,名字有程序的设计者指定,但要满足标识符的命名规则;
3⃣️:break后指定到哪一个lable就退出哪一个循环;
4⃣️:在实际开发中尽量不要用标签;
5⃣️:如果没有指定break;,则就近退出循环。
例题十
字符串的比较:
String name="小明";
System.out.println(name.equals.("小明"));
System.out.println(name.equals.("小明".equls(name));//【推荐,避免空指针】
17、跳转控制语句——continue:
基本介绍:
1⃣️:continue语句用于结束本次循环,继续执行下一次循环;
2⃣️:continue语句出现在多层嵌套结构中时,可以通过标签指明要跳过哪一层循环,与break;标签使用规则一样。
18、跳转控制语句——return:
return语句的使用方法:
1⃣️:return使用在方法,表示退出所在方法;
2⃣️;return:写在main方法中,则退出程序。