分支结构
if...else
if...else 是编程中用于条件控制流的基本结构,它允许程序根据不同的条件执行不同的代码块。以下是 if...else 结构的一些关键特点和用法:
基本语法:
javaif (条件) {
    // 条件为真时执行的代码块
} else {
    // 条件为假时执行的代码块
}
关键特点:
- 条件判断:if后面跟着的条件(通常是一个布尔表达式)决定了哪个代码块将被执行。
- 分支执行:如果条件为 true,则执行if代码块;如果条件为false,则执行else代码块。
- 单一 else对应一个if:每个else只与它上面的最近的if配对。
- 可嵌套使用:if...else结构可以相互嵌套,形成更复杂的条件逻辑。
示例代码:
javaint score = 75;
if (score >= 90) {
    System.out.println("A");
} else if (score >= 80) {
    System.out.println("B");
} else if (score >= 70) {
    System.out.println("C");
} else {
    System.out.println("F");
}
在这个示例中,程序根据 score 变量的值,通过一系列的 if...else 语句判断并打印出对应的成绩等级。
扩展用法:
- 省略 else:else可以省略,如果条件不满足且没有else,则不执行任何操作。
- 多条件判断:可以通过 else if来添加更多的条件分支。
- 复合条件:可以使用逻辑运算符(如 &&、||、!)来组合多个条件。
嵌套 if...else 示例:
java复制if (score >= 90) {
    System.out.println("A");
    if (score == 100) {
        System.out.println("Perfect!");
    }
} else if (score >= 80) {
    System.out.println("B");
} else {
    System.out.println("Not passing");
}
在这个嵌套示例中,首先判断成绩是否为A等级,如果是,进一步判断是否为满分,并打印相应的消息。
if...else 结构是程序设计中实现条件逻辑的核心,它使得程序能够根据不同的条件执行不同的操作。
switch...case
switch...case 是一种条件语句,它允许程序根据不同的值执行不同的代码块。在 Java 中,switch 语句可以提高代码的可读性和维护性,特别是当有多个条件分支时。
基本语法:
javaswitch (expression) {
    case value1:
        // 当expression等于value1时执行的代码
        break;
    case value2:
        // 当expression等于value2时执行的代码
        break;
    // 更多的case
    default:
        // 如果没有匹配的case,执行的代码
}
支持的数据类型:
- 原始数据类型:byte、short、char、int。注意,long类型和float或double类型的值不能作为switch表达式。
- 字符串(String):Java 7 及以后版本支持字符串类型的 switch表达式。
- 枚举(Enum):Java 7 及以后版本支持枚举类型的 switch表达式。
- 包装类:从 Java 12 开始,基本类型对应的包装类(如 Integer、Long等)也可以用于switch表达式。
示例:
javaint month = 4;
switch (month) {
    case 1:
        System.out.println("January");
        break;
    case 2:
        System.out.println("February");
        break;
    case 3:
        System.out.println("March");
        break;
    case 4:
        System.out.println("April");
        break;
    // 更多月份
    default:
        System.out.println("Invalid month");
}
注意事项:
- break语句:每个- case后面通常需要一个- break语句,以防止执行流程 "穿透" 到后续的- case。
- default子句:是可选的,如果没有匹配的- case,并且没有- default,则- switch语句将不执行任何操作。
- case值的唯一性:每个- case后的值在同一个- switch语句中必须是唯一的。
- 类型限制:switch表达式的结果必须是上述支持的数据类型之一,不能是对象或其他复杂类型。
Java 12 引入的 Switch 表达式(预览特性):
从 Java 12 开始,作为预览特性,switch 可以作为表达式使用,这允许 switch 语句直接返回一个值,而不是作为独立的语句存在。
javaString result = switch (month) {
    case 1, 2, 3, 4, 5, 6 -> "Half-year 1";
    case 7, 8, 9, 10, 11, 12 -> "Half-year 2";
    default -> "Invalid month";
};
switch后可以跟那些类型
在Java中,switch 语句可以接受以下几种类型的表达式:
- 原始数据类型:
- byte
- short
- char
- int
 
- 字符串(String):
- 从Java 7开始,switch语句可以接受String类型的表达式。
 
- 从Java 7开始,
- 枚举(Enum):
- 从Java 7开始,switch语句可以接受枚举类型的表达式。
 
- 从Java 7开始,
- 包装类:
- 从Java 12开始,基本类型对应的包装类(如 Integer、Long、Byte等)也可以作为switch表达式。
 
- 从Java 12开始,基本类型对应的包装类(如 
- Java 12引入的模式匹配(预览特性):
- Java 12引入了模式匹配的 switch表达式作为预览特性,它允许更灵活的模式匹配语法。
 
- Java 12引入了模式匹配的 
- Java 13及以后版本的模式匹配:
- Java 13及以后版本继续支持模式匹配的 switch表达式,并作为正式特性。
 
- Java 13及以后版本继续支持模式匹配的 
以下是一些示例,展示 switch 语句可以接受的不同类型的表达式:
java复制// int类型的原始数据类型
int day = 3;
switch (day) {
    case 1:
    case 2:
    case 3:
        System.out.println("Weekend");
        break;
    case 4:
    case 5:
        System.out.println("Weekday");
        break;
    default:
        System.out.println("Invalid day");
}
// String类型
String fruit = "Apple";
switch (fruit) {
    case "Apple":
        System.out.println("Apple is red");
        break;
    case "Banana":
        System.out.println("Banana is yellow");
        break;
    default:
        System.out.println("Unknown fruit");
}
// 枚举类型
enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
Day today = Day.MONDAY;
switch (today) {
    case MONDAY:
    case FRIDAY:
        System.out.println("End of the week");
        break;
    default:
        System.out.println("Just another day");
}
// 包装类(从Java 12开始)
Integer number = 42;
switch (number) {
    case 42:
        System.out.println("The answer to life, the universe and everything");
        break;
    default:
        System.out.println("Not the number we were looking for");
}
请注意,switch 语句不能直接使用 long、float 或 double 类型的表达式,也不能使用对象引用类型,除非它们是 String 或 Enum。如果需要在 switch 中使用这些类型,可能需要将它们转换为 int 或使用其他条件语句,如 if-else。

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号