Java教程 专题
专题目录
您的位置:java > Java教程专题 > java switch基础介绍及具体使用方法
java switch基础介绍及具体使用方法
作者:--    发布时间:2019-11-20

在编写代码时,逻辑判断是避免不了的,switch case语句在很多编程语言中的功能都是用于条件判断,java中为多路分支选择流程专门提供了switch语句,switch语句根据一个表达式的值,选择运行多个操作中的一个。当需要对选项进行等值判断时,使用switch语句更加简洁明了。switch的case语句可以处理int,short,byte,char类型的值,但是不能处理long,string等类型。说起来你应该也会想到另一个常用的条件判断语句if else,本文重点介绍java中switch case语句的用法,但是会在篇末对两种语句的区别做一个总结。


java switch


java switch基础语法

switch(表达式){ 
case 表达式常量1:语句1breakcase 表达式常量2:语句2break; 
...... 
case 表达式常量n:语句n; 
break; 
[default:语句n+1;] 
} 

其中,一个case表达式常量成为标号,代表一个case分支的入口。switch语句在运行时首先计算switch圆括号中“表达式”的值,这个值必须是整型或字符型的,同时后面各个case表达式常量的值的类型应与switch圆括号中“表达式”的值类型一致。一个case语句代表一个制定操作,然后转向结构出口。default子句是可选的,当表达式的值与case表达式常量的值都不匹配时,就运行default子句,转向结构出口。 

java里switch的执行顺序

switch表达式的值决定选择哪个case分支,如果找不到相应的分支,就直接从"default" 开始输出。
当程序执行一条case语句后,因为例子中的case分支中没有break 和return语句,所以程序会执行紧接于其后的语句。  

public class switch {
    public static void main(string[] args)
     {
        int x=0;
       switch(x)
       {
        default:
            system.out.println("default");
        case 1:
            system.out.println(1);
        case 2:
            system.out.println(2);
        }
    }
}

 输出结果如下:

default
1
2

public class switch {
    public static void main(string[] args) {
        int x = 0;
        switch (x) {
        default:
            system.out.println("default");
        case 0:
            system.out.println(0);
        case 1:
            system.out.println(1);
       case 2:
            system.out.println(2);
        }
    }
}
输出结果如下:
0
1
2

public class switch {
    public static void main(string[] args) {
        int x = 0;
        switch (x) {
        case 0:
            system.out.println(0);
        case 1:
            system.out.println(1);
        case 2:
            system.out.println(2);
        default:
            system.out.println("default");
        }
    }
}
输出结果如下:
0
1
2
default

java switch语句注意事项

java switch语句注意事项

switch(a),括号中a的取值只能是整型或者可以转换为整型的数值类型,比如byte、short、int、char、还有枚举;需要强调的是:long和string类型是不能作用在switch语句上的。

     

case b:c;case是常量表达式,也就是说b的取值只能是常量(需要定义一个final型的常量,后面会详细介绍原因)或者int、byte、short、char(比如1、2、3、200000000000(注意了这是整型)),如果你需要在此处写一个表达式或者变量,那么就要加上单引号; case后的语句可以不用大括号,就是c不需要用大括号包裹着;

     

default就是如果没有符合的case就执行它,default并不是必须的。


案例分析:

1.标准型(case后面都有break语句,case后的值都是整数)

int i=3; 
switch(i) 
{ 
case 1: 
system.out.println(1); 
break; 
case 2: 
system.out.println(2); 
break;  
default: 
system.out.println("default"); 
break; 
} 

2.常量型(case后面都有break语句,case后的值都是常量)

private final int num1=1private final int num2=1int i=3; 
switch(i) 
{ 
case num1: 
system.out.println(1); 
break; 
case num2: 
system.out.println(2); 
break;  
default: 
system.out.println("default"); 
break; 
} 

3.表达式型(case后面都有break语句,case后的值都是表达式)

int i=3; 
int b = 2;
switch(i) 
{ 
case ‘类名.getid()‘: 
system.out.println(1); 
break; 
case ‘b‘ 
system.out.println(2); 
break;  
default: 
system.out.println("default"); 
break; 
}

实例:java 用switch语句解决月薪范围问题
public class switchdemo {
    public static void main(string[] args) {
 
        int month = 8;
        string monthstring;
        switch (month) {
            case 1:  monthstring = "january";
                     break;
            case 2:  monthstring = "february";
                     break;
            case 3:  monthstring = "march";
                     break;
            case 4:  monthstring = "april";
                     break;
            case 5:  monthstring = "may";
                     break;
            case 6:  monthstring = "june";
                     break;
            case 7:  monthstring = "july";
                     break;
            case 8:  monthstring = "august";
                     break;
            case 9:  monthstring = "september";
                     break;
            case 10: monthstring = "october";
                     break;
            case 11: monthstring = "november";
                     break;
            case 12: monthstring = "december";
                     break;
            default: monthstring = "invalid month";
                     break;
        }
        system.out.println(monthstring);
    }
}

switch和if语句的区别

java中switch和if语句的区别

switch和if语句都是java的选择语句,这两种语句都是允许在程序运行时控制程序的执行过程。

switch和if-else相比,由于使用了binary tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true。 


编译器编译switch与编译if...else...不同。不管有多少case,都直接跳转,不需逐个比较查询。 

 

相比于if-else结构,switch的效率绝对是要高很多的,但是switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。

  
switch效率高,从汇编代码可以看出来。switch只计算一次值,然后都是test。
  

switch的效率与分支数无关。当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)。分支比较多,那当然是使用switch。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册