一、程序流程控制介绍:
在程序中,程序运行的流程控制决定程序是如何执行的,主要有 三大流程控制语句:
-
顺序控制
-
分支控制
-
循环控制
1、顺序控制:程序从上到下逐行地执行,中间没有任何判断和跳转
注:java中定义变量时采用合法的向前引用(先定义后使用)
2、分支控制if-else:让程序有选择的执行,分支控制有三种
-
单分支
-
双分支
-
多分支
单分支基本语法:
if(条件表达式){ 执行代码块;(可以有多条语句) }
注:当条件表达式为true时,就会执行{}的代码,如果为false,就不执行
特别说明:如果{}中只有一条语句,{}可以省略,建议写上{},看起来清晰明了
3、双分支基本语法:
if(条件表达式){ 执行代码块1; }else{ 执行代码块2; }
注:当条件表达式成立,即执行代码块1,否则执行代码块2,如果执行代码块,只有一条语句,则{}可以省略,否则,不能省略
4、多分支基本语法:
if(条件表达式1){ 执行代码块1; }else if(条件表达式2){ 执行代码块2; }else if(条件表达式3){ 执行代码块3; } …… else { 执行代码块n; }
注:
-
当条件表达式1成立时,即执行代码块1
-
如果表达式1不成立,才去判断表达式2是否成立
-
如果表达式2成立,就执行代码块2
-
以此类推,如果所有的表达式都不成立
-
则执行else的代码块,注意,只能有一个执行入口
-
多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
-
如果有else,所有的条件表达式都不成立,则默认执行else代码块
5、嵌套分支:
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支结构称为内层分支外面的分支结构称为外层分支
switch分支结构基本语法:
switch(表达式){ case 常量1; //当 语句块1; break; //代表结束switch语句,跳出循环 …… case 常量n; 语句块n; break; default; default语句块; break; }
-
switch关键字,表示switch分支
-
表达式对应一个值
-
case 常量1:当表达式的值等于常量1,就执行语句块1
-
break:表示退出switch
-
如 果和case常量1匹配,就执行语句块1,如果没有匹配,就继续匹配case常量2
-
如果一个都没有匹配上,执行default
6、switch注意事项和细节讨论
-
表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
-
switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum枚举,String)
-
case子句中的值必须是常量,而不能是变量
-
default子句是可选的,当没有匹配的case时,执行default
-
break语句用来执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,直到执行到break
7、switch和if的比较:
如果判断的具体数值不多,而且符合byte、short、int、char、enum、String这六种类型,虽然两个语句都可以使用,建议使用switch语句
其他情况,对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广
8、for循环基本语法:
for(循环变量初始化;循环条件;循环变量迭代){ 循环操作(语句); }
说明:
-
for关键字,表示循环控制
-
for有四要素:(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
-
循环操作,这里可以有多条语句,也就是要循环执行的代码
-
如果循环操作(语句)只有一条语句,可以省略{},建议不省略
注意事项和细节说明:
循环条件是返回一个布尔值的表达式
for(;循环判断条件;)中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略
循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开
for(;;)表示一个无限循环,死循环
9、while循环控制基本语法:
循环变量初始化;
while(循环条件){ 循环体(语句); 循环变量迭代; }
说明:while循环也有四要素;只是四要素放的位置,不一样
注意事项和说明:
-
循环条件是返回一个布尔值的表达式
-
while循环是先判断再执行语句
10、do..while循环控制基本语法:
循环变量初始化;
do{ 循环体(语句); 循环变量迭代; }while(循环条件);
说明:
-
do while是关键字
-
也有循环四要素,只是位置不一样
-
先执行,再判断,也就是说,一定会执行一次
-
最后有一个分号;
注意事项和细节说明:
循环条件是返回一个布尔值的表达式
11、do while循环是先执行,再判断,因此它至少执行一次
多重循环控制介绍:
将一个循环放在另一个循环体内,就形成了嵌套循环,其中,for,while,do..while均可以作为外层循环和内层循环(建议一般使用两层,最多不要超过3层,否则,代码的可读性很差)
实质上,嵌套循环就是把内层循环当成外层循环的循环体,只有当内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次
12、break语句基本介绍:
break语句用于终止某个语句块的执行,一般使用在switch或者循环(for,while,do while)中
基本语法:
{…… • break; • …… }
跳转控制语句-break注意事项和细节说明:
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
标签的基本使用:
label1:{…… • label2: {…… • label3: { …… • break label2; • …… • } • } • }
注:
-
break语句可以指定退出哪层
-
label1是标签,由程序员指定
-
break后指定到哪个label就退出到哪里
-
在实际的开发中,尽量不要使用标签
-
如果没有指定break,默认退出最近的循环体
14、跳转控制语句-continue基本介绍:
continue语句用于结束本次循环,继续执行下一次循环
continue语句出现在多层嵌套的循环语句体中,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用的规则一样
基本语法:
{ ……
continue;
……
}
跳转控制语句-return介绍:
return 使用在方法,表示跳出所在的方法,如果return写在main方法,退出程序