选择结构

选择结构

  • if单选择结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch多选择结构

if单选择结构

  1. 我们很多时候需要去判断一个东西是否可行, 然后我们才去执行, 这样一个过程中用if语句来表示
  2. 语法:
if (布尔表达式) {
	// 如果布尔表达式为true将执行的语句
}

在这里插入图片描述

代码
Scanner scanner = new Scanner(System.in);

System.out.println("请输入内容: ");
String s = scanner.nextLine();

// equals: 判断字符串是否相等
if ("Hello".equals(s)) {
	System.out.println(s);
}

System.out.println("End");

scanner.close();

if双选择结构

  1. 需求: 要么…要么(二选其一)
  2. 语法:
if (布尔表达式) {
	// 如果布尔表达式为true将执行的语句
}

在这里插入图片描述

代码
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多选择结构

  1. 要么…则, 要么…则, 要么…则, 不符合上述所有if, 则
  2. 语法:
if (布尔表达式 1) {
	// 如果布尔表达式 1 的值为true 执行代码
} else if () {
	// 如果布尔表达式 2 的值为true 执行代码
} else if () {
	// 如果布尔表达式 3 的值为true 执行代码
} else {
	// 如果以上布尔表达式都不为true执行代码
}

在这里插入图片描述

代码
Scanner scanner = new Scanner(System.in);

/**
 * if语句至多有1个else语句, else语句在所有的else if语句之后。
 * if语句可以有若干个else if语句, 它们必须在else语句之前。
 * 一旦其中一个else if语句检测为true, 其他的else if以及else语句都将跳过执行。
 */
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结构

  1. 使用嵌套的if…else语句是合法的。也就是说你可以在另一个if 或者 else if语句中使用if 或者 else if 语句。你可以像if 语句一样嵌套 else if…else。
  2. 语法:
if (布尔表达式 1) {
	// 如果布尔表达式 1 的值为true 执行代码
	if (布尔表达式 2) {
		// 如果布尔表达式 2 的值为true执行代码
	}
}

switch多选择结构

  1. 多选择结构还有一个实现方式就是switch case 语句。
  2. switch case 语句判断一个变量与一系列值中的某个值是否相等, 每个值成为一个分支。
  3. switch语句中的变量类型可以是:
    - byte, short, int 或者char
    - 从Java SE 7开始
    - switch 支持字符串String类型了
    - 同时 case 标签必须为串常量或字面量
  4. 语法:
switch(expression){
	case value: 
		// 语句
		break; // 可选
	case value:
		// 语句
		break; // 可选
	// 你可以有任意数量的case语句
	default: // 可选
	// 语句
}
代码
// case穿透 // switch 匹配一个具体的值
// Java7之后支持字符串
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("位置等级");
}
源码层面
// 如果switch中使用字符串, 那么字节码文件中是将字符串看成hascode去赋值给一个byte变量, 再新起一个switch类型是byte
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块");
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值