- 顺序结构
- 分支结构
- 循环结构
- 顺序结构
if语句的第一种格式:
if(关系表达式){ 例:if(一口2L水){
语句体; System.out.println(“水牛”);
} }
if的注意点:
1.大括号的开头可以另起一行书写,但还是建议写在第一行的末尾
2.在语句体中,如果只要一句代码,大括号可以省略不写,但建议写上
3.如果对一个布尔类型的变量进行判断,不要加==号,直接把变量写在小括号中
if语句的第二种格式:
if(关系表达式){
语句体1;
}else {
语句体2;
}
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体1
- 如果关系表达式的值为false就执行语句体2
- 继续执行后面的其他语句
if语句的第三种格式:
if(关系表达式){
语句体1;
}else if(关系表达式2){
语句体2;
}
...
else{
语句体n+1;
}
核心过程:
从上往下依次判断,只要有一个判断为真,就执行对应的语句体,如果所以的判断都为假,就执行else的语句体
分支语句
switch语句格式:
switch(表达式){ 执行流程:
case 值1: 1.首先计算表达式的值
语句体1; 2.依次和case后面的值进行比较,如果有对应的值,
break; 就会执行相应的语句,在执行的过程中,遇到break
case 值2: 就会结束
语句体2; 3.如果所以的case后面的值和表达式的值不匹配,
break; 就会执行default里的语句体,然后结束整个switch
... 语句
default:
语句体n+1;
break;
}
格式说明:
- 表达式:(将要匹配的值)取值为byte、short、int、char、JDK5以后是可以枚举的,JDK7以后是可以String。
- case:后面跟的事要和表达式进行比较的值(被匹配的值)。
- break:表示中断,结束的意思,用来结束switch语句。
- default:表示所有情况都不匹配时,就执行该处的内容,和if语句的else相似。
- case后面的值只能是字面量,不能是变量。
- case给出的值不允许重复。
switch其他知识点
(一)default的位置和省略
1.位置:default不一定写在最下面,可以写在任意位置,但我们习惯写在最下面
2.省略:default可以省略,语法不会有问题,但不建议省略
(二)case穿透
原因:语句体中,没有写break导致的
使用场景:如果多个case的语句体重复了,我们可以考虑case穿透简化代码
- switch特性(JDK12版本之后)
代码如下
import java.util.Scanner;
public class text2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("键盘录入一个数表开始");
int number = sc.nextInt();
switch(number){
case 1:
System.out.println("输出1");
break;
case 2:
System.out.println("输出2");
break;
case 3:
System.out.println("输出3");
break;
case 4:
System.out.println("输出4");
break;
default:
System.out.println("输出10");
break;
}
}
}
可写成
import java.util.Scanner;
public class text2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("键盘录入一个数表开始");
int number = sc.nextInt();
switch(number) {
case 1 -> System.out.println("输出1");
case 2 -> System.out.println("输出2");
case 3 -> System.out.println("输出3");
case 4 -> System.out.println("输出4");
default -> System.out.println("输出10");
}
}
}
- switch与if第三种格式的使用场景
if的第三种格式:一般用于对范围的判断
switch的第三种格式:把有限个数据一一列举出来,让我们任选其一
循环结构
for循环格式:
for(初始化;条件判断;条件控制){ 例:for(int i = 1;i <= 10;i++){
循环体语句; System.out.println(“helloworld”);
} }
执行流程:
- 执行初始化语句
- 执行条件判断语句,看其结果是true还是false,如果是false,循环结束,如果是true,执行循环体语句
- 执行条件控制语句
- 回到2.继续执行条件判断语句
注意:
初始化语句只执行一次
判断语句为true,循环继续
判断语句为false,循环结束
扩展:
- 求和的变量不能定义在循环的里面,因为变量只在所属的大括号中有效
- 如果我们把变量定义在循环的里面,那么当前变量只能在本次循环中有效,当本次循环结束之后,变量就会从内存中消失。第二次循环开始的时候,又会重新定义一个新的变量。
- 如果以后我们要写累加求和的变量,可以把变量定义在循环的外面
while循环的执行流程
格式:
初始化语句:
while(条件判断语句){
循环体语句;
条件控制语句;
}
while和for的区别:
for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问了
while循环中,控制循环的变量中,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
for循环中:知道循环次数或者循环范围
while循环中:不知道循环次数和范围,只知道循环的结束条件
do...while循环
格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);