您的位置:科技频道 > 科学 > 正文

java switch的效率怎么样 JAVA中的switch详解

来源:时代新闻网 时间:2022-12-01 13:55:46

switch case 语句有如下规则:

switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开 始,switch 支持字符串String 类型了,同时 case 标签必须为字符串常量或字面 量。

switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字 面常量。

当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分 支(可以在任何位置,但一般在最后一个)。default 在没有 case 语句的值和变 量值相等的时候执行。default 分支不需要 break 语句。(如果case语句中没有break 语句,程序会一直执行到default 分支)

一、switch 介绍

switch 语法格式:

switch (表达式) {

case 常量表达式或枚举常量:

语句;

break;

case 常量表达式或枚举常量:

语句;

break;

......

default: 语句;

break;

复制代码

switch 匹配的表达式可以是:

byte、short、char、int类型及 这4种类型的包装类型;

枚举类型;

String 类型;

case 匹配的表达式可以是:

常量表达式;

枚举常量;

注意一点:case提供了switch表达式的入口地址,一旦switch表达式与某个case分支匹配,则从该分支的语句开始执行,一直执行下去,即其后的所有case分支的语句也会被执行,直到遇到break语句。

运行结果:

匹配成功1 匹配成功2 匹配成功3

switch成功匹配了a分支,但a、b分支都没有 break 语句,所以一直执行a分支后的所有语句,直到遇到c分支的break语句才终止。

他与下方的结果是不一样的:

package test;

public class SwitchTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

String a = "c";

switch (a) {

case "a":

System.out.println("匹配成功a");

//break;

case "b":

System.out.println("匹配成功b");

//break;

case "c":

System.out.println("匹配成功c");

break;

default:

System.out.println("hhhh");

break;

在最后一个case中才判断正确,则前面case中的内容都不会被输出

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。

11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

精彩推送

公司

吉卜力工作室如今已加入到主题公园的浪潮,并于11月1日正式对公众开放全球首个项目,将《龙猫》等经典作品的场景复原至现实世界。对于吉卜

详细>>

随着在线旅游企业数量的不断增多,售卖不合理低价旅游产品、违规利用用户个人信息等问题也时有发生。11月1日,文旅部发布《文化和旅游部关

详细>>

两个小时,这是越南全国首票榴莲从装车到运送至我国广西崇左友谊关口岸的时间。得益于一体化供应链,2021年,中国与越南进出口贸易额达到23

详细>>

11月1日,北京商报记者梳理发现,截至9月末,10家A股上市农商行资产规模均有所扩大,重庆农商行、上海农商行仍以万亿元总资产位居前列。营

详细>>

西贝餐饮集团(以下简称西贝)在儿童餐的道路上越走越深。11月1日,北京商报记者从西贝获悉,其将推出西贝儿童餐零售产品。目前,部分西贝门

详细>>

新一期麻辣粉和逆回购操作如期公布。9月15日,央行发布消息称,为维护银行体系流动性合理充裕,开展4000亿元中期借贷便利(MLF)操作和20亿元

详细>>