9.分支结构【重点】
9.1if分支
if (条件) {
语句体
}
条件必须为布尔型数据,true或false
流程:先判断条件是否成立,成立运行后边大括号里的语句体,不成立则跳过语句体执行后边内容
9.2if-else分支
if (条件) {
语句体1
} else {
语句体2
}
流程:先判断条件是否成立,true执行语句体1,false则跳过语句体1执行else后的语句体2
9.3if-else if分支
if (条件1) {
语句体1
} else if (条件2) {
语句体2
} else if (条件3) {
语句体3
} else {
语句体4
}
流程:判断条件1是否成立,成立执行语句体1,不成立跳过,判断else if后的条件2是否成立,成立执行后边的语句体2,不成立跳过,所有判断过最后执行else后的大括号内的语句体
9.4switch-case分支
switch (表达式) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
case 常量3:
语句体3;
break;
....
default:
语句n;
break;
}
流程:用switch后括号里的表达式的值和case后的常量作比较,如果相同就运行对应case后的语句体,并break中断接下来的比较;如果不同就跳过语句体,和下一个case后的常量相比较,如果所有的case都没有匹配上,执行default后的语句,并结束比较
switch后表达式的数据类型?
int byte short char String(jdk1.8之后) 枚举
不能使用类型:long(switch底层用int判断,其他类型也是转为int在判断,而long类型比switch大,没办法转换,会丢失数据),boolean
扩展:
使用scanner包得到控制台键盘输入数据
1.导包:import java.util.Scanner;
2.new一个对象
Scanner sc = new Scanner(System.in);
3.通过sc对象的方法获取控制台输入
int a = sc.nextInt();
八大基本数据类型都可以
sca1.nextInt();
sca1.nextFloat();
sca1.nextDouble();
sca1.nextLine(); 获取控制台的字符串数据
sca1.nextLine().charAt(0); 获取字符
9.5三目运算符
格式:
数据类型 x = 表达式 ? value1 : value2;
流程:当表达式为true时,将value1赋值给x,当表达式为false时,将value2赋值给x
10.循环结构
用途:解决代码中大量重复或有规律的内容,提高效率
循环的是三个条件:1.初始化条件 2.循环条件 3.终止条件
三个循环:while循环,do-while循环,for循环
10.1while循环
格式:
while (布尔表达式) {
循环体;
}
流程:
先判断表达式是否成立,若为true了则执行循环体,执行完后再次判断表达式是否成立,直到表达式为false则跳出循环
10.2do-while循环【几乎不用】
格式:
do { 语句体; }while (布尔表达式);
流程:先执行语句体,然后判断布尔表达式是否为true,是true则再次执行语句体,为false则跳出循环
while 和do-while的区别:
while先判断再循环,do-while先循环在判断,do-while最少执行一次语句体
10.3for循环【重点】
格式:
for (表达式1; 表达式2; 表达式3) {
循环体;
}
表达式1:初始化条件
表达式2:终止条件
表达式3:循环条件
流程:
先执行表达式1,然后判断是否满足表达式2,若返回true则执行循环体,最后执行表达式3,然后在判断是否满足表达式2,满足再次执行循环体,依次循环直至表达式2为false,跳出循环
10.4循环嵌套
一个循环里嵌套着另一个循环
流程:外部循环进入内部循环后先把内部循环执行结束后再进入到外部循环,后再跳入内部循环