选择结构
分类
选择结构分为 if选择结构 和 switch选择结构
if选择结构
其中if选择结构又分为
- if单选择结构
- if双选择结构
- if多选择结构
- 嵌套的if结构
if单选择结构
我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示
// 语法:
if(布尔表达式){
// 如果布尔表达式为true 将执行的语句
}
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String str = scanner.nextLine();
// equals 用于判断字符串是否相等
if (str.equals("Hello")){
System.out.println(str);
}
System.out.println("End");
scanner.close();
if双选择结构
if双选择结构 if…else…
// 语法:
if(布尔表达式){
// 如果布尔表达式为true 将执行的语句
}else{
// 如果布尔表达式为false 将执行的语句
}
// 考试成绩score 大于等于60分 为及格,如果小于60分 则不及格;
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双选择结构是不能完成的,它存在区间多级判断。比如100-90为A,90-80为B…所以就有了 if多选择结构
// 语法:
if(布尔表达式1){
// 如果布尔表达式1的值为true 将执行的语句
}else if (布尔表达式2){
// 如果布尔表达式2的值为true 将执行的语句
}else if (布尔表达式3){
// 如果布尔表达式3的值为true 将执行的语句
}else if (布尔表达式4){
// 如果布尔表达式4的值为true 将执行的语句
}else{
// 如果以上布尔表达式都不为true 将执行的语句
}
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的分数:");
int score = scanner.nextInt();
if (score==100){
System.out.println("恭喜你的成绩为满分S级");
}else if (score<100 && score>=90){
System.out.println("你的成绩等级为A级");
}
else if (score<90 && score>=80){
System.out.println("你的成绩等级为B级");
}
else if (score<80 && score>=70){
System.out.println("你的成绩等级为C级");
}
else if (score<70 && score>=60){
System.out.println("你的成绩等级为D级");
}
else if (score<60 && score>=0){
System.out.println("你的成绩等级为F级,也就是不及格!!!");
}else {
System.out.println("请输入正确的成绩");
}
scanner.close();
嵌套的if结构
使用嵌套的if…else…语句是合法的
你可以在另一个if 或 else if语句中使用if 或 else if 语句
// 语法:
if (布尔表达式1){
// 如果布尔表达式1的值为true 将执行的语句
if(布尔表达式2){
// 如果布尔表达式2的值为true 将执行的语句
}
}
注意
- if 语句至多有1个else语句,else语句 在所有的else if 语句后面
- if 语句可以有若干个else if 语句,他们必须在else 语句之前
- 一旦其中一个else if 语句检测为 true ,其他的 else if 语句 以及 else 语句都将跳过执行
switch选择结构
多选择结构还有一个实现方法 就是 switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
// 语法:
switch(expression){
case value:
// 语句
break; // 可选
case value:
// 语句
break; // 可选
case value:
// 语句
break; // 可选
// 可以有任意数量的 case语句
default: // 可选
// 语句
}
// case 穿透 // switch 匹配一个具体的值
char grade = 'A';
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("未知");
}
switch 的变量类型可以是
- byte,short,int,char
- 从Java SE 7(JDK7) 开始
- switch 支持 字符串String 类型了
- 同时 case 标签必须为字符串类型或字面量
String str = "陕西";
// JDK7 的新特性,表达式结果可以是字符串
switch (str){
case "河北":
System.out.println("这么近那么美,周末到河北");
break;
case "河南":
System.out.println("这么近那么美,周末到河南");
break;
case "河西":
System.out.println("这么近那么美,周末到河西");
break;
case "河东":
System.out.println("这么近那么美,周末到河东");
break;
default:
System.out.println("太冷了,不去了");
}
反编译 java —> class(字节码文件) —> 反编译(IDEA)
字符的本质还是数字
// 这是 .class 字节码文件
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.h.struct;
public class SwitchDemo02 {
public SwitchDemo02() {
}
public static void main(String[] args) {
String str = "陕西";
byte var3 = -1;
switch(str.hashCode()) {
case 882633: // 字节码
if (str.equals("河东")) {
var3 = 3;
}
break;
case 883908:
if (str.equals("河北")) {
var3 = 0;
}
break;
case 883972:
if (str.equals("河南")) {
var3 = 1;
}
break;
case 897836:
if (str.equals("河西")) {
var3 = 2;
}
}
switch(var3) {
case 0:
System.out.println("这么近那么美,周末到河北");
break;
case 1:
System.out.println("这么近那么美,周末到河南");
break;
case 2:
System.out.println("这么近那么美,周末到河西");
break;
case 3:
System.out.println("这么近那么美,周末到河东");
break;
default:
System.out.println("太冷了,不去了");
}
}
}
标签:case,语句,Java,System,else,选择,println,结构,out
From: https://blog.csdn.net/m0_75024203/article/details/144068649