流程控制语句,分支,循环,跳转控制,随机数
分支语句(switch)
概念
switch语句主要是对罗列出来的数据进行判断,然后根据判断的结果执行代码;
使用场景
当多个数据值,选其一执行的时候,可以使用switch
格式
switch(表达式){
case 数值1:
代码块1;
break;
case 数值2:
代码块2;
break;
...
default:
代码块n+1;
break;
}
执行顺序
根据switch后小括号中的表达式计算出的数据值,依次和大括号中的case后的值做匹配,
谁匹配成功,则执行对应的代码块,遇到break,就会结束
如果都匹配不成功,则执行default中的内容
注意事项
1.switch后小括号的数据类型,只能是 byte,short,int,char,String,枚举,这几个类型
2.每一个case下面的break可以不写,但是如果不写,会发生穿透现象
3.穿透:就是从匹配成功的case值处开始执行代码,一直向下执行,直到遇到break或者大括号,switch才会结束;
4.default可以写在case的上面或者中间,或者下面,或者省略,但是建议写在最后.(根据业务需求,决定是否省略default)
5.case中的值不能重复,并且case后不能跟变量,只能跟常量
switch和if
- switch 写的语句,都能用if替换
- switch 后面只能对单个值进行相等判断,if可以判断更多的逻辑
if(week>5&&week<10)
这种不能用switch判断
- switch 比if效率高,条件越多,效果越明显
循环语句
概念
重复性的执行某一段代码
3中循环语句
for循环
格式
for(初始化语句1;条件判断语句2;步进语句4){
循环体3;
} // 1,2,3,4这四个数字表示的是语句编号
执行流程
先执行1,然后判断2是true还是false,如果是true,则执行3,然后执行4,然后判断2是true还是false,如果还是true,则继续循环…直到2变成fasle,循环才结束
while循环
格式
初始化语句1;
while(条件判断语句2){
循环体3;
步进语句4;
}
执行流程
先执行1,然后判断2是true还是false,如果是true,则执行3,然后执行4,然后再判断2是否为true,是true的话,继续循环…直到2变成了fasle,循环才会结束
do{}while()循环
格式
初始化语句1;
do{
循环体3;
步进语句4;
}while(条件判断语句2);
执行流程
先执行1,然后执行3,然后执行4,然后再判断2是true还是false,如果是true,则再执行3,再执行4,再判断2,是否为true,为true继续执行循环体,直到2为false,循环体才会结束,与for和while不同的是,这个循环体会先执行一次循环体,然后再判断,可以用先斩后奏来形容
练习
1.打印输出1-5,5-1;
2.(1)求1-5之间所有的数字和,包含1和5
(2)求1-100之间所有的偶数和,包含1和100
3.打印"水仙花"数
3中循环的区别
1.for和while都是先判断,再循环;而do while是先循环,后判断;(do while循环至少会执行1次)
2.默认情况下,for循环中的初始化语句定义的变量,在for循环结束后,不能继续使用了;而while和do while结束后,可以继续使用初始化语句的变量;
3.for和while在所有的情况下,都是可以等价互换的,但根据经验,如果有明确的循环次数或区间,推荐使用for;没有明确的次数,推荐使用while;
死循环(无限循环)
条件一直为true,那么这个循环就是无限循环;
情况1
for(;;){
...
}
情况2
while(true){
...
}
情况3
do{
...
}while(true);
跳转控制语句
概念
主要对循环流程进行控制;(可以跳过某一次循环,或者直接结束循环)
语法
continue : 跳过某次循环体内容的执行,只能用在循环里,for,while,do while 都可以用,循环中遇到continue,当前这次循环结束,continue后面的代码不会执行,开始下一次循环
break : 终止循环体内容的执行
System.exit(0); // 这个代码也能终止循环,不过不常用,这个是直接关闭jvm虚拟机
除此之外,还可以用return语句,退出循环,具体使用哪个要看个人习惯和具体需求
使用方法
需要写在循环的大括号中,基于条件控制语句使用
注意:如果不使用if语句的情况下使用,语法不报错,但是没有实际意义
标号语句
给循环起个名字,然后配合break或continue控制带名字的循环;
lo: // 循环的别名,自己随意起的
while(...){
...
break lo; // 结束循环
}
lo2: // 循环的别名,自己随意起的
for(...;...;...){
...
break lo2;
}
随机数
使用步骤
1.导包,必须放在类的上面 import java.util.Random;
2.创建对象 Random r = new Random();
3.生成随机数 int x = r.nextInt(范围a);
注意事项
1.小括号中的范围a,表示生成的数字是0到a-1
2.指定的范围a必须是大于0的整数
3.生成[m,n]范围的随机数公式:int x = r.nextInt(n-m+1)+m
练习
1.猜数字案例
2.打印99乘法表