Java中的switch语句是一种多分支选择结构,可以一个变量的值改变程序的控制流。switch语句用于根据表达式的值执行不同的代码块。它类似于C语言中的switch语句。

1、switch使用示例

switch语句支持的数据类型有byteshortcharint,以及它们的包装类(如ByteShort、CharacterInteger)和enum类型。从Java SE 7开始,switch也支持String类型。

public class Main {
  public static void main(String[] args) {
        String s = "a";
        switch (s) {
            case "a":
                System.out.println("case is a");
                break;
            case "b":
                System.out.println("case is b");
                break;
        }
        //default的用法:在没有匹配到的情况或匹配到的代码块没有break,就会执行        default代码。
        s="f";
        switch (s) {
            case "a":
                System.out.println("case is a");
                break;
            case "b":
                System.out.println("case is b");
                break;
            default:
                System.out.println("default");
                break;
        }
  }
}

2、switch 不支持 long

switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。

public class Main {
  public static void main(String[] args) {
         // long x = 111;
         // switch (x) { // Incompatible types. Found: 'long', required: 'char,          byte, short, int, Character, Byte, Short, Integer, String, or an          enum'
         //     case 1:
         //         System.out.println(111);
         //         break;
         //     case 2:
         //         System.out.println(222);
         //         break;
         // }
  }
}

注意:对于longfloatdouble及其包装类型(LongFloatDouble),switch语句是不支持的。如需根据long类型的变量做判断,将不得不使用if-else语句。