顺序控制
介绍
程序从上往下进行,中间没有任何判断和跳转
注意事项
java定义变量时采用向前引用。
public class Test{
int num1 = 10;
int num2 = num1 + 2;
}
错误形式
public class Test{
int num2 = num1 + 2; // 错误
int num1 = 10;
}
分支控制
介绍
让程序有选择的执行,分为单分支,双分支,多分支
单分支
基本语法
if (条件表达式){
执行代码块;(可以有多条语句)
}
说明:当条件表达式为真,执行{}内的代码,如果为假,则不执行,如果只有一条语句,可以不写{},建议写
案例
双分支
基本语法
if (条件表达式){
执行代码块1;(可以有多条语句)
}else{
执行代码块2;(可以有多条语句)
}
说明:当条件表达式为真,执行代码块1,如果为假,则执行代码块2,如果代码块只有一条语句,可以不写{},建议写
案例
单分支和双分支练习
![](https://i-blog.csdnimg.cn/blog_migrate/03f6ef811315dd801806e10b07519f57.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5ce14533c95ae8dae3deab8933d7b112.png)
多分支if-else
基本语法
if (条件表达式1){
执行代码块1;(可以有多条语句)
}
else if(条件表达式2){
执行代码块2;(可以有多条语句)
}
……
else{
执行代码块n;(可以有多条语句)
}
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/e2f34638fb4e6f124824195d8fbdb395.png)
说明
当表达式1成立,执行代码块1
表达式1不成立,才去判断表达式2是否成立
如果表达式2成立,执行代码块2,以此类推
所有表达式都不成立,执行最后的else代码块
注意:只能执行一个入口
特别说明:多分枝可以没有else,如果所有条件都不成立,则一个执行入口都没有
案例
![](https://i-blog.csdnimg.cn/blog_migrate/46f30c770a87ecfc22e8a33451148687.png)
嵌套分支
在分支结构中又完整嵌套了另一个分支结构,里面的被称为内层分支,外面的被称为外层分支,嵌套尽量不要超过三成
![](https://i-blog.csdnimg.cn/blog_migrate/d4d9077388544154b95c753c1830af14.png)
switch分支结构
switch(表达式){
case常量1:
语句块1;
break;
case常量2:
语句块2;
break;
……
语句块n;
break;
default:
default语句块;
}
注意:
switch关键字,表示switch分支
表达式对应一个值
case 常量1:当表达式等于常量1,就执行后面的语句块
break表示退出switch,没有的话就会继续执行后面的语句,无须判断后面的条件
如果case 常量1没有被匹配,就会尝试匹配常量二,直到最后
如果都没有,则执行default
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/79462a607d45f4905d000944bec7be07.png)
案例
![](https://i-blog.csdnimg.cn/blog_migrate/47af21384111dad66d39c2dca33a878d.png)
细节
表达式数据类型应和case后的常量类型一致,或是可以自动转换成相互比较的类型,比如输入的是字符,常量是int
switch中的表达式返回值必须是:(byte,short,int,char,enum,String) 注意:不能是小数!
case 子句中的值必须是常量或常量表达式,不能是变量
default是可选的,当没有case时,执行default
break语句用来在执行完成一个case时跳出switch语句块,没有break的话,程序会执行后面每一个case的语句块,除非再次遇到break。
练习
![](https://i-blog.csdnimg.cn/blog_migrate/43ada45a769edb2800e055e1d7e1394b.png)
if和switch比较
如果判断的具体数值不多,而且符合byte,short,int,char,enum[枚举],String这六种类型,虽然两个语句都可以用,建议使用switch语句。
其他情况:对于区间判断,对结果为布尔类型判断,使用if,if范围更广。
循环控制
for循环控制
可以让程序循环执行
案例:
打印10句你好
基本语法:
for(循环初始化;循环条件;循环变量迭代){
循环操作(语句);
}
说明:
for表示循环控制
for有四要素,1.循环变量初始化,2.循环条件,3.循环操作,4.循环变量的迭代
循环操作,可以有多条语句,也就是要循环的代码
如果循环操作只有一条语句,可以省略{},建议不要省略
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/a67378195769503f7224b350439cf589.png)
细节与注意
循环条件是返回一个布尔值的表达式
for(;循环条件;)中的初始化和变量迭代都可以写到其他地方,但是两边的分号不能省略
循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开。
练习
while循环
基本语法
循环变量初始化
while(循环条件){
循环体;
循环变量迭代;
}
while的四要素跟for性质一样,存放位置不同。
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/b5dbd7896e8a2d0627bd58d200a75469.png)
细节说明
循环条件是一个返回布尔值的表达式
while循环先判断再执行语句
练习
![](https://i-blog.csdnimg.cn/blog_migrate/5300bbf235d8bdbd640b05198709c103.png)
do-while循环
基本语法
循环变量初始化
do{
循环体;
循环变量迭代;
}while(循环条件);
do while 是关键字
也有循环四要素,只是位置不一样
先执行再判断,一定至少执行一次
最后有一个分号
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/428d3d205f877e88ab5270cd5a0f8c48.png)
细节说明
循环条件是一个返回布尔值的表达式
do…while循环先执行再判断,因此至少执行一次
练习
![](https://i-blog.csdnimg.cn/blog_migrate/2b835347d84a40987116e39b10e6440d.png)
多重循环控制
介绍
将一个循环放在另一个循环体内,形成嵌套循环,其中for,while,do…while都可以作为外层循环和内层循环。建议不要超过三层
实质上,嵌套循环就是把内层循环当成外层循环的循环体,只有内层循环条件为false时,才会跳出内层循环,才可以结束外层的一次循环。
设置外层循环次数是m次,内层是n次,则需要执行m*n次。
应用实例
![](https://i-blog.csdnimg.cn/blog_migrate/365a729fa546ae0850b58c8aec1f8026.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56ae56099038d68c58bd7622ff9d7e8f.png)
break
介绍
break语句用于终止某个语句块的执行,一般使用在switch或者循环中
基本语法
{
break;
}
示意图
![](https://i-blog.csdnimg.cn/blog_migrate/4d8f618a130431fe64880abb3588eeff.png)
案例
细节
break label1;
break可以指定退出哪层
label1是标签,由程序员指定
break后指定到哪个label就退出到哪里
在实际开发中,尽量不要使用标签
如果没有指定,break默认退出当前的循环体
练习
![](https://i-blog.csdnimg.cn/blog_migrate/88a7962915f52b583d9b292251f34b6f.png)
continue
介绍
continue用于结束本次循环,继续执行下一次循环。
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这和前面的标签使用的规则一样。
基本语法
{
continue;
}
示意图
![](https://i-blog.csdnimg.cn/blog_migrate/34afa43de1ed8979ea600a288f55b2e4.png)
细节说明
跟break相似,也可以指定跳过对应标签的循环,但是和break作用不同
跳转控制语句return
介绍
return使用在方法,表示跳出所在方法,如果写在main方法中,会退出程序。
作业
![](https://i-blog.csdnimg.cn/blog_migrate/3990e1f857404751cab141e617a61cb1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/053adb5a7f98df9a19eb2b5bfec38756.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ab485ccddc82f3ab5954737ba44221a1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bdbea50a5b2729774fa3e2cafc9e87c3.png)