选择结构
- if单选择结构
- if双选择结构
- if多选择结构
- 嵌套的if结构
- switch多选择结构
if单选择结构
- 我们很多时候需要去判断一个东西是否可行, 然后我们才去执行, 这样一个过程中用if语句来表示
- 语法:
if (布尔表达式) {
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/47e21d3b14338850596bbd8058979fa1.png)
代码
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容: ");
String s = scanner.nextLine();
if ("Hello".equals(s)) {
System.out.println(s);
}
System.out.println("End");
scanner.close();
if双选择结构
- 需求: 要么…要么(二选其一)
- 语法:
if (布尔表达式) {
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/35c68a26440a16ed04f164d7a8914e87.png)
代码
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩: ");
int score = scanner.nextInt();
if (score > 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
scanner.close();
if多选择结构
- 要么…则, 要么…则, 要么…则, 不符合上述所有if, 则
- 语法:
if (布尔表达式 1) {
} else if () {
} else if () {
} else {
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/96852d48bbf88269c25ceffeca050291.png)
代码
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩: ");
int score = scanner.nextInt();
if (100 == score) {
System.out.println("恭喜满分");
} else if (100 > score && 90 <= score) {
System.out.println("A级");
} else if (90 > score && 80 <= score) {
System.out.println("B级");
} else if (80 > score && 70 <= score) {
System.out.println("C级");
} else if (70 > score && 60 <= score) {
System.out.println("D级");
} else if (60 > score && 0 <= score) {
System.out.println("不及格");
} else {
System.out.println("成绩不合法");
}
嵌套的if结构
- 使用嵌套的if…else语句是合法的。也就是说你可以在另一个if 或者 else if语句中使用if 或者 else if 语句。你可以像if 语句一样嵌套 else if…else。
- 语法:
if (布尔表达式 1) {
if (布尔表达式 2) {
}
}
switch多选择结构
- 多选择结构还有一个实现方式就是switch case 语句。
- switch case 语句判断一个变量与一系列值中的某个值是否相等, 每个值成为一个分支。
- switch语句中的变量类型可以是:
- byte, short, int 或者char
- 从Java SE 7开始
- switch 支持字符串String类型了
- 同时 case 标签必须为串常量或字面量 - 语法:
switch(expression){
case value:
break;
case value:
break;
default:
}
代码
char grade = 'B';
switch(grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
case 'E':
System.out.println("挂科");
break;
default:
System.out.println("位置等级");
}
源码层面
package tk.mybatis.simple.designMode;
public class Test {
String a;
public Test() {
}
public static void main(String[] args) {
String testString = "测试01";
byte var3 = -1;
switch(testString.hashCode()) {
case 867924843:
if (testString.equals("测试01")) {
var3 = 0;
}
break;
case 867924844:
if (testString.equals("测试02")) {
var3 = 1;
}
break;
case 867924845:
if (testString.equals("测试03")) {
var3 = 2;
}
}
switch(var3) {
case 0:
System.out.println("进入测试01块");
break;
case 1:
System.out.println("进入测试02块");
break;
case 2:
System.out.println("进入测试03块");
break;
default:
System.out.println("进入default块");
}
}
}