java学习记录五:流程语句和循环语句
一、if语句
1.第一种写法
1.写法
if(布尔表达式){
语句体;
}
其它语句;
2.执行流程:
(1)使用计算if后面()中布尔表达式的结果,看是true,还是false
(2)如果if后面()中布尔表达式的结果是true,执行if后面{}中的语句体,接着执行其它语句
(3)如果if后面()中布尔表达式的结果是false,跳过if后面{}中的语句体,直接执行其它语句
3.注意:
(1)if语句的第一种格式,适用于有一种情况的场景
(2)if后面()中表达式不管写的多么简单或者多么复杂,最终的结果一定是布尔类型,要么是true,要么是false
(3)if后面{}中的语句体,要么执行(布尔表达式结果为true)要么不执行(布尔表达式结果为false)
(4)if后面{}中的语句体: 一条或者多条语句(每条语句末尾处使用分号结尾)
(5)if后面{}中的语句体的语句体只有一条语句,此时{}可以省略,最好别省。
2.第二种写法
1.写法
if(布尔表达式){
语句体1;
} else {
语句体2;
}
其它语句;
2.执行流程:
(1)使用计算if后面()中布尔表达式的结果,看是true,还是false
(2)如果if后面()中布尔表达式的结果是true,执行if后面{}中的语句体1,接着执行其它语句
(3)如果if后面()中布尔表达式的结果是false,执行else后面{}中的语句体2,接着执行其它语句
3.注意:
(1)if语句的第二种格式,适用于有两种情况的场景
(2)if后面()中表达式不管写的多么简单或者多么复杂,最终的结果一定是布尔类型,要么是true,要么是false
(3)语句体1和语句体2,只有一个会被执行
(4)适用于二选一的场景(是与否的场景)
3.第三种写法
1.写法
if (布尔表达式1) {
语句体1;
} else if (布尔表达式2) {
语句体2;
}
…else if (布尔表达式n) {
语句体n;
} else {
语句体n+1;
}
其它语句;
2.执行流程:
(1)首先计算布尔表达式1的值
(2)如果值为true就执行语句体1;如果值为false就计算布尔表达式2的值
(3)如果值为true就执行语句体2;如果值为false就计算布尔表达式3的值
(4)…如上
(5)如果没有任何布尔表达式为true,就执行语句体n+1。
3.注意:
(1)if语句的第三种格式,适用于有多种情况(大于等于3)的场景
(2)if后面()中表达式不管写的多么简单或者多么复杂,最终的结果一定是布尔类型,要么是true,要么是false
(3)语句体1到语句体n+1,只有一个会被执行
(4)适用于多选一的场景
(5)有if就可以在后面写条件,没有if,不能写条件,不能直接在else后面写条件
(6)最后一个else后面没有if,是用来兜底的,如果上面所有if后的条件都不成立,直接执行最后一个else中的代码
二、switch语句
1.写法
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
case 常量值n:
语句体n;
break;
default:
语句体n+1;
break;
}
其它语句;
2.执行流程:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
3.注意事项:
(1)break的作用是用来结束switch语句的,一旦执行break,直接跳出到switch外面的其它语句继续执行
(2)switch后面()中的表达式的数据类型,只能是以下几种类型:
基本类型: byte/short/char/int 都可以
引用类型: String或者枚举
(3)case 后面只能写常量,而且常量值不能重复
(4)最后一个default的作用:
用来兜底的,如果所有的case后面的常量值和switch中表达式的值都不相同,就执行default中的内容
(5)如果default放在最后的话: 后面的break可以省略
(6)如果所有的case和default后面都有break,那么default和case的顺序可以任意排列,不影响最终的结果
4.缩写代码,case穿透
当多个case里的执行语句重复时,可以写在一起,这其实就是case穿透,当匹配case 常量值1;时,会继续向后执行,不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。所以可以缩写在一起
switch(表达式) {
case 常量值1:
case 常量值2:
语句体1;
break;
case 常量值3:
case 常量值4:
语句体2;
break;
...
case 常量值n:
语句体n;
break;
default:
语句体n+1;
break;
}
其它语句;
三、for循环
1.写法
//for(初始化表达式1;布尔表达式2;步进表达式4){
// 循环体3;
// }
for (int count = 1; count <= 5; count++) {
System.out.println("HelloWorld....."+count);
}
知道循环次数的可以使用这个
四、while语句
不知道多少次循环用这个
1.写法
初始化表达式1;
// while(布尔表达式2) {
// 循环体3;
// 步进表达式4;
// }
// 其它语句
//使用while
int j = 1;
while(j<=5) {//j: 1,2,3,4,5 6<=5 --> false --> 结束while循环
System.out.println("HelloWorld~~~~~"+j);
j++;
}
System.out.println("main......end.....");
五、do-while循环
必定先执行一次
1.写法
初始化表达式1;
//do {
// 循环体3;
// 步进表达式4;
//}while(布尔表达式2);
int i = 1;
do {
System.out.println("HelloWorld~~~~~"+i);
i++;
}while(i<=5);//2,3,4,5 6<=5: false,结束do-while循环,执行后面的语句
System.out.println("main....end....");
六、break
1.作用
1.使用在switch语句中,用来结束switch语句,执行switch语句后面的其它语句
2.使用在循环中,用来结束循环(1.本次循环的循环体中break后面的代码不再执行 2.剩余次数的循环也不再执行),
执行循环后面的其它语句
3.break不能使用在出switch和循环语句以外的其它位置
七、continue
1.作用
1.只能使用在循环中,作用是提前结束本次循环,继续进行下一次循环
2.不能使用在除循环结构中的其它位置
八、returen
跳出循环或者退出方法
九、随机数
1.作用
java.util.Random类就是用来产生随机数字的,也是一种引用类型
2.使用
(1)导包(找到我们要使用的东西)
//import 包名.类名;
import java.util.Random;
快捷键:
alt + 回车
注意:
a.java.lang包下的东西可以直接使用,不用导包
b.当前类和要使用的类,处于同一个包中,也不用导包
(2)创建对象
//类名 对象名 = new 类名(...);
//类名: 之前写代码时,class关键字后面的名称
//创建Scanner类的对象:
Scanner sc = new Scanner(System.in);//其中: System.in 是固定写法
//创建Random类的对象:
Random r = new Random();//其中: ()中什么都不用写,固定格式
(3)使用
//Scanner中获取键盘录入的整数:
int num = sc.nextInt();
//Random中产生随机整数数字:
r.nextInt(): //产生一个int范围内(正负21亿)的随机数字
r.nextInt(int类型整数数字n): //产生一个0到n之间的随机数字(包含0,但是不包含n)
//其中: 圆括号()中的int类型整数数字n表示产生随机数字的上限范围