流程控制语句 【重点】
顺序结构语句
选择结构语句
循环结构语句
循环跳转语句
Random类 【重点】
流程控制语句 【重点】
流程控制语句概述
什么是流程控制语句
用于控制Java程序执行流程的语句
流程控制语句的分类
顺序结构语句:按照代码的编写顺序,从上往下执行
选择(分支)结构语句:满足条件则执行,不满足则不执行
循环结构语句:重复不断的做同一件事情
顺序结构语句
选择结构语句
if语句
格式一:
if(条件){
语句体;
}
执行流程
首先判断if小括号中的条件是true还是false,
如果是true,则执行if大括号中的语句体;
如果是false,则不执行if大括号中的语句体;
注意事项:
1、if小括号中的条件一定是一个布尔类型的值,即不是true就是false
2、不要在小括号和大括号之间写上分号(;)
3、if的大括号可以省略,一般是只有一行语句的时候进行省略,不建议省略
格式二:
if(条件){
语句体1;
} else {
语句体2;
}
执行流程:
首先判断if小括号中的条件是true还是false,
如果是true,则执行if大括号中的语句体1;
如果是false,则执行else大括号中的语句体2;
注意事项:
1、else的格式后面不能加小括号和条件,因为它的执行也是取决于if的小括号中的条件
2、格式是两种情况的选择,会且只会选择其中一个,会且只会执行其中一个语句体
3、三元运算符在一些情况下可以用于简化if格式二的书写,但是不是格式二的所有情况下都能使用三元运算符简化
三元运算符能编写的,if格式二一定能编写
if格式二能编写,三元运算符不一定能编写
格式三:
if(条件1){
语句体1;
} else if(条件2){
语句体2;
} else if(条件3){
语句体3;
} else {
语句体n;
}
执行流程:
首先判断if小括号中的条件1的结果是true还是false
如果是true,则执行if大括号中的语句体1;
如果是false,则判断else if小括号中的条件2的结果是true还是false
如果是true,则执行大括号中的语句体2
如果是false,依次类推
如果最后所有的if或者else if小括号中的条件都不满足,则最终执行else大括号中的语句体
注意事项:
1、虽然格式三有很多的语句体,但是会且只会执行其中的一个语句体
需求:键盘录入学生考试成绩, 根据成绩程序给出不同的奖励。
95~100分 : 自行车一辆
90~94分 : 游乐场一次
80~89分 : 变形金刚一个
80分以下 : 挨顿揍, 这座城市又多了一个伤心的人~
Scanner + if格式三
步骤:
1、通过键盘录入动态输入考试成绩
2、根据格式三队考试成绩进行判断
3、满足判断条件则输出对应的奖励
if:如果
else:否则
switch语句
格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
case 值4:
语句体4;
break;
default:
语句体n;
break;
}
执行流程
首先计算表达式的结果,将结果从上往下和case后面的值进行比较,看看是否相等,
如果相等,则执行对应case中的语句体;
如果不相等,继续从上往下比较case后面的值
如果比较完,和所有的case后面的值都不相等,则执行default后面的语句体
注意事项
1、case后面的值只能是常量,不能是变量
并且case后面的值不能相同
2、switch小括号中的表达式的结果只能是以下类型(6种):
基本类型:byte short char int
int或者可以自动转为int的类型
引用类型:
String JDK7.0版本
枚举 JDK5.0版本
3、switch语句的结束条件有两个:1、碰到break 2、碰到switch的右大括号({)
如果没有switch语句中省略了break,则可能会有case穿透问题
4、default可以省略也可以不省略,但是建议不省略,它相当于if语句中的else,用于
对所有不满足条件的情况的统一处理
default的位置可以任意,可以在所有case之上、之下和之中
不影响程序的执行流程(前提:不省略break)
循环结构语句
for循环
格式
for(初始化语句; 条件判断语句; 循环后的控制语句){
循环体语句;
}
循环的组成的4部分:
初始化语句:一般来说,就是一个变量的定义语句
条件判断语句:一般来说,是一个关系表达式,结果是布尔类型的值,它决定了循环是否继续执行
循环体语句:循环的主体和核心代码,重复做的那件事情
循环后的控制语句:一般来说,改变循环变量的值,从而控制循环
执行流程
1、先执行初始化语句
2、执行条件判断语句,它的结果一定是一个布尔类型的值,不是true就是false
如果判断结果为false,则循环到此结束
如果判断结果为true,则继续循环
3、继续循环,执行循环体语句
4、执行循环后的控制语句
5、继续执行条件判断语句,重复2/3/4步
注意事项
1、不论循环多少次,初始化语句只会执行一次
2、条件判断语句,一定是一个布尔类型的值,不是true就是false,它决定了循环是否继续执行
3、当循环体语句只有一行的时候,大括号可以省略,但是建议不省
4、小括号和大括号之间不能有分号(;)
while循环
格式
完整格式:
初始化语句;
while(条件判断语句){
循环体语句;
循环后的控制语句;
}
省略格式:
while(条件判断语句) {
循环体语句;
}
执行流程
1、执行初始化语句
2、执行条件判断语句,结果是布尔类型的,不是true就是false
如果是false,循环就结束
如果是true,循环继续执行
3、循环继续执行,循环体语句
4、执行循环后的控制语句
5、依次类推,循环执行2/3/4步
注意事项
1、while循环和for循环可以等价替换,只是格式不同
do...while循环
格式
初始化语句;
do{
循环体语句;
循环后的控制语句;
}while(条件判断语句);
执行流程
先执行初始化语句,然后依次直接执行循环体语句,循环后的控制语句,
执行完之后才执行条件判断语句,如果结果为false,则循环结束
如果结果为true,会再次依次执行循环体语句,循环后的控制语句,依次类推
注意事项
1、这种循环一定至少会执行一次循环体语句
2、对于这种do...while循环,是先执行循环体语句再判断
条件判断语句是决定循环是否要执行第二次或者更多次,但是决定不了第一次循环体语句的执行
三种循环的区别
do...while这种循环和另外两种循环(for和while)的区别
do...while循环是先执行循环体一次,然后再判断
for和while这两种循环先判断,满足条件才会执行循环体,如果不满足有可能一次都不会执行
for和while的区别
1、初始化变量的问题
for的初始化语句的变量的作用域更小一些,出了for循环就无法使用
while的初始化语句的变量的作用域更大一些,出了while循环还能继续使用
2、for和while循环选择的问题:
for > while > do...while
一般循环次数确定,选择for循环居多
一般循环次数不确定,选择while循环居多
死循环
死循环:一个永远不会停下来的循环
for(;;){
}
while(true){
}
do{
}while(true);
以上三种死循环的写法中,while的死循环写法使用居多
如果是一个永远结束不了的死循环,那么其下面不能再有语句,否则会编译报错
循环跳转语句