流程控制-选择结构

流程控制-选择结构

if 单选择结构

我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示。

if (布尔表达式) {
    // 如果布尔表达式为true将执行的语句
}
package com.gcbeen.struct;

import java.util.Scanner;

/**
 * @author gcbeen
 */
public class IfDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入内容:");
        String s = scanner.nextLine();
        // equals:判断字符串是否相等
        if (s.equals("Hello")) {
            System.out.println(s);
        }
        System.out.println("End");
        scanner.close();
    }
}

if 双选择结构

if (布尔表达式) {
    // 如果布尔表达式为true
} else {
    // 如果布尔表达式值为false
}
package com.gcbeen.struct;

import java.util.Scanner;

/**
 * @author gcbeen
 */
public class IfDemo02 {

    public static void main(String[] args) {
        // 考试分数大于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 (布尔表达式1) {
    // 如果布尔表达式1为true执行代码
} else if (布尔表达式2) {
    // 如果布尔表达式2为true执行代码
} else if (布尔表达式3) {
    // 如果布尔表达式3为true执行代码
} else {
    // 如果以上布尔表达式值都不为true执行代码
}
package com.gcbeen.struct;

import java.util.Scanner;

/**
 * @author gcbeen
 */
public class IFDemo03 {

    public static void main(String[] args) {
        // 考试分数大于60就是及格,小于60则为不及格
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩:");
        int score = scanner.nextInt();
        if (score == 100) {
            System.out.println("恭喜满分!");
        } 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("不及格");
        } else {
            System.out.println("成绩不合法");
        }
        scanner.close();
    }

}

嵌套的if结构

if (布尔表达式1) {
    // 如果布尔表达式1为true执行代码
    if (布尔表达式2) {
        // 如果布尔表达式2为true执行代码
    }
}

switch多选择结构

多选择结构还有一个实现方式就是 switch case语句。

switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

package com.gcbeen.struct;

import java.util.Scanner;

/**
 * @author gcbeen
 */
public class SwitchDemo01 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 
        char grade = 'K';
        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("成绩错误!!!");
        }
        scanner.close();
    }
}

JDK 7 新特性:判断条件为字符串

package com.gcbeen.struct;

import java.util.Scanner;

public class SwitchDemo02 {

    public static void main(String[] args) {
        char a = 'b';
        switch (a) {
            case 'a':
                System.out.println('a');
                break;
            case 'b':
                System.out.println('b');
                break;
            default:
                break;
        }

        String name = "小蚂蚁";
        switch (name) {
            case "蝼蚁":
                System.out.println("蝼蚁");
                break;
            case "小蚂蚁":
                System.out.println("小蚂蚁");
                break;
            default:
                System.out.println("错误");
        }

        String str = "world";
        switch (str) {
            case "hello":
                System.out.println("hello");
                break;
            case "world":
                System.out.println("world");
                break;
            default:
                break;
        }

    }

}

实际实现

字节码反编译结果
switch 比较的是 int 型整数

package com.gcbeen.struct;

/* loaded from: SwitchDemo02.class */
public class SwitchDemo02 {
    public static void main(String[] args) {
        switch (98) {
            case 97:
                System.out.println('a');
                break;
            case 98:
                System.out.println('b');
                break;
        }
        char c = 65535;
        switch ("小蚂蚁".hashCode()) {
            case 1109637:
                if ("小蚂蚁".equals("蝼蚁")) {
                    c = 0;
                    break;
                }
                break;
            case 23749774:
                if ("小蚂蚁".equals("小蚂蚁")) {
                    c = 1;
                    break;
                }
                break;
        }
        switch (c) {
            case 0:
                System.out.println("蝼蚁");
                break;
            case 1:
                System.out.println("小蚂蚁");
                break;
            default:
                System.out.println("错误");
                break;
        }
        char c2 = 65535;
        switch ("world".hashCode()) {
            case 99162322:
                if ("world".equals("hello")) {
                    c2 = 0;
                    break;
                }
                break;
            case 113318802:
                if ("world".equals("world")) {
                    c2 = 1;
                    break;
                }
                break;
        }
        switch (c2) {
            case 0:
                System.out.println("hello");
                return;
            case 1:
                System.out.println("world");
                return;
            default:
                return;
        }
    }
}
posted @ 2022-09-09 08:57  gcbeen  阅读(21)  评论(0)    收藏  举报