📜  Java中的 Switch Case 中的字符串

📅  最后修改于: 2022-05-13 01:55:42.326000             🧑  作者: Mango

Java中的 Switch Case 中的字符串

switch 语句是多路分支语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。基本上,表达式可以是 byte、short、char 和 int 原始数据类型。从 JDK7 开始,它也适用于枚举类型( Java中的 Enums)、String 类和 Wrapper 类。

因此,在 JDK 7 中,switch 语句中的字符串概念开始发挥作用,因为我们可以使用字符串字面量或常量来控制 switch 语句,这在 C/C++ 中是不可能的。使用基于字符串的开关是对使用等效的 if/else 语句序列的改进。我们现在将字符串声明为 String 类对象,如下所示:

插图:

String geeks = "GeeksforGeeks" ; // Valid from JDK7 and onwards 
Object geeks = "GeeksforGeeks" ; // Invalid from JDK7 and onwards 

使用 switch 语句时需要记住一些关键点,因为它确实提供了便利,但同时也起到了双刃剑的作用,因此我们最好通过列出的特征:

1. 昂贵的操作:在执行方面,打开字符串可能比打开原始数据类型更昂贵。因此,最好仅在控制数据已经是字符串形式的情况下才打开字符串。

2. String 不应该为 NULL:确保任何 switch 语句中的表达式在处理字符串时不为 null,以防止在运行时抛出 NullPointerException。

3.区分大小写比较: switch语句将其表达式中的String对象与每个case标签关联的表达式进行比较,就好像它使用String类的equals()方法一样,因此switch语句中String对象的比较是区分大小写的.

4. 比 if-else 更好: Java编译器从使用 String 对象的 switch 语句生成的字节码通常比从链式 if-then-else 语句生成的字节码更有效。

示例 1:

Java
// Java Program to Demonstrate use of String to
// Control a Switch Statement
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Custom input string
        String str = "two";
 
        // Switch statement over above string
        switch (str) {
 
        // Case 1
        case "one":
 
            // Print statement corresponding case
            System.out.println("one");
 
            // break keyword terminates the
            // code execution here itself
            break;
 
        // Case 2
        case "two":
 
            // Print statement corresponding case
            System.out.println("two");
            break;
 
        // Case 3
        case "three":
 
            // Print statement corresponding case
            System.out.println("three");
            break;
 
        // Case 4
        // Default case
        default:
 
            // Print statement corresponding case
            System.out.println("no match");
        }
    }
}


Java
// Java Program to Demonstrate use of String to
// Control a Switch Statement
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Custom input string
        // Null string is passed
        String str = "";
 
        // Switch statement over above string
        switch (str) {
 
        // Case 1
        case "one":
 
            // Print statement corresponding case
            System.out.println("one");
 
            // break keyword terminates the
            // code execution here itself
            break;
 
        // Case 2
        case "two":
 
            // Print statement corresponding case
            System.out.println("two");
            break;
 
        // Case 3
        case "three":
 
            // Print statement corresponding case
            System.out.println("three");
            break;
 
        // Case 4
        // Default case
        default:
 
            // Print statement corresponding case
            System.out.println("no match");
        }
    }
}


输出
two

示例 2:

Java

// Java Program to Demonstrate use of String to
// Control a Switch Statement
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Custom input string
        // Null string is passed
        String str = "";
 
        // Switch statement over above string
        switch (str) {
 
        // Case 1
        case "one":
 
            // Print statement corresponding case
            System.out.println("one");
 
            // break keyword terminates the
            // code execution here itself
            break;
 
        // Case 2
        case "two":
 
            // Print statement corresponding case
            System.out.println("two");
            break;
 
        // Case 3
        case "three":
 
            // Print statement corresponding case
            System.out.println("three");
            break;
 
        // Case 4
        // Default case
        default:
 
            // Print statement corresponding case
            System.out.println("no match");
        }
    }
}
输出
no match