一. 基本if选择结构
语法:
if(布尔表达式) {
// 代码块
}
执行流程:
- 对布尔表达式进行判断
- 结果为true,则先执行代码块,再执行后续代码。
- 结果为false,则跳过代码块,直接执行后续代码。
int score = 100;
if (score > 90) {
System.out.println("Win!");
}
二. if-else选择结构
语法:
if(布尔表达式) {
// 代码块1
} else {
// 代码块2
}
执行流程:
- 对布尔表达式进行判断
- 结果为true,则先执行代码块1,再退出整个结构,执行后续代码。
- 结果为false,则先执行代码块2,再退出整个结构,执行后续代码。
int score = 100;
if (score > 90) {
System.out.println("Win!");
} else {
System.out.println("Game Over.");
}
三. 多重if选择结构
语法:
if(布尔表达式1) {
// 代码块1
}else if (布尔表达式2) {
// 代码块2
}else if (布尔表达式3) {
// 代码块3
}else{
// 代码块4
}
执行流程:
- 表达式1为true,则执行代码块1,再退出整个结构。
- 表达式2为true,则执行代码块2,再退出整个结构。
- 表达式3为true,则执行代码块3,再退出整个结构。
- 以上均为false,则执行代码块4,再退出整个结构。
【注】: 相互排斥,有一个为true,其他均不执行。
【注】: 阿里编码规范要求,多重if结构必须以else结尾。
【注】: 适用于区间判断,但要保证条件顺序
int score = 69;
if (score == 100) {
System.out.println("完美");
} else if (score > 84) {
System.out.println("优秀");
} else if (score > 69) {
System.out.println("良好");
} else if (score > 59) {
System.out.println("及格");
} else {
System.out.println("菜");
}
四. 嵌套if选择结构
语法:
if(外层表达式) {
if (内层表达式) {
// 内层代码块1
}else{
// 内层代码块2
}
}else{
// 外层代码块
}
执行流程:
当外层条件满足时,再判断内层条件。
【注】: 一个选择结构中,可嵌套另一个选择结构。嵌套格式正确的情况下,支持任意组合。
Scanner input = new Scanner(System.in);
int year = input.nextInt();
if (year % 4 == 0) {
if (year % 400 == 0) {
System.out.println("是闰年");
} else if(year % 100 == 0){
System.out.println("是平年");
} else {
System.out.println("是闰年");
}
} else {
System.out.println("是平年");
}
五. switch分支结构
语法:
switch(变量/表达式) {
case 值1:
逻辑代码1;
case 值2:
逻辑代码2;
// …
case 值n:
逻辑代码n;
default:
未满足时的逻辑代码;
}
可判断的类型:
byte, short, int, char, String(JDK7+)
执行流程:
-
如果变量中的值等于值1,则执行逻辑代码1。
- 如果变量中的值等于值2,则执行逻辑代码2。
- 如果变量中的值等于值n,则执行逻辑代码n。
- 如果变量中的值没有匹配到case值时,则执行default中的逻辑代码。
- 当匹配的case执行后,不会自动退出整个结构,而是继续向下执行。
【注】: switch结构可搭配break关键字使用,跳出当前代码块,以达到防止穿透的目的。
【注】: 适用于等值判断
Scanner input = new Scanner(System.in);
int exp = input.nextInt();
System.out.println();
switch (exp){
case 1:
System.out.println("麻辣拌");
break ;
case 2:
System.out.println("锅包肉");
break ;
case 3:
System.out.println("猪肚鸡");
break ;
case 4:
System.out.println("糖醋鱼");
break ;
case 5:
System.out.println("烤肉");
break ;
case 6:
System.out.println("水果沙拉");
break ;
case 7:
System.out.println("芝士玉米");
break ;
default:
System.out.println("请输入1~7");
break ;
六. 局部变量
在Java语言里,根据定义变量位置的不同,可以将变量分成:成员变量(存在于heap(堆区))中,和类一起创建),类变量(存在于method(方法区))和局部变量(存在于stack (栈区))中,当方法执行完成,让出内存,让其他方法来使用内存)。详见【附】
局部变量概念:
声明在方法内部的变量,必须先赋值再使用。
作用范围:
定义行开始到所在的代码块结束。
【注】: 多个变量,在重合的作用范围,不可出现重名(命名冲突)。