Java switch支持的数据类型详解

网友投稿 271 2022-12-02

Java switch支持的数据类型详解

目录switch支持的数据类型支持的数据类型实现switch支持的10种数据类型和注意事项switch支持的数据类型switch注意事项

switch支持的数据类型

随着java的不断发展,switch支持的数据类型也有了变化,下面就来讲述switch如何来实现对新增数据类型的支持。

支持的数据类型

基本数据类型:int,byte,short,char

基本数据类型封装类:Integer,Byte,Short,Character

枚举类型:Enum(JDK 5+开始支持)

字符串类型:String(JDK 7+ 开始支持)

实现

switch底层是使用int类型来判断的,int类型是四个字节的整数型类型,所以只要字节小于或等于4的整数型类型都是可以转化成int类型的,所以支持byte[1字节],short[2字节]都是可以理解的,long[8字节]超出了int的范围,因而不支持。

关于枚举和字符(串)也是转化为int类型间接实现的。

关于这一点,我们可以验证的,下面举例验证switch如何实现对枚举数据类型的支持。

直接上代码:

public class SwitchTest {

public static void main(String[] args) {

Color color = Color.YELLOW;

switch (color) {

case RED:

System.out.println("RED:" + color.getName());

break;

case YELLOW:

System.out.println("GREEN:" + color.getName());

break;

case BLUE:

System.out.println("BLUE:" + color.getName());

break;

case BLANK:

System.out.println("BLANK:" + color.getName());

break;

default:

System.out.println("DEFAULT");

break;

}

}

public enum Color {

RED("红色", 1),

YELLOW("绿色", 2),

BLUE("蓝色", 3),

BLANK("黑色", 4);

private String name;

private int index;

private Color(String name, int index) {

this.name = name;

this.index = index;

}

public static String getName(int index) {

for (Color c : Color.values()) {

if (c.getIndex() == index) {

return c.name;

}

}

return null;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getIndex() {

return index;

}

public void setIndex(int index) {

this.index = index;

}

}

}

编译后生成了SwitchTest Color.class和SwitchTest.class 两个文件,打开编译成SwitchTest.class的过渡文件SwitchTest Color.class和SwitchTest.class两个文件,打开编译成SwitchTest.class的过渡文件SwitchTest Color.class和SwitchTest.class两个文件,打开编译成SwitchTest.class的过渡文件SwitchTestColor.class:

我们发现多了一个数组Color[] arrayOfColor,原来枚举是再编译的过程中产生了一个新的数组,switch是通过转化成数组的形式来实现对枚举类型的支持。

我们通过相同的方式也可以看到switch对String类型的支持也是通过将String转化为int类型得以实现的,这里就不再赘http://述。 switch对四种基本数据类型封装类的支持是通过对封装类的拆箱来实现的点击了解

注意封装类不能为null,否则会报空指针异常的。

switch支持的10种数据类型和注意事项

switch支持的数据类型

【切记不支持long、double、float及其包装类型】

基本数据类型:char,byte, short, int

包装数据类型: Character,Bythttp://e,Short,Integer

枚举类型:Enum

字符串类型:String(Jdk 7+ 开始支持)

Color color = Color.RED;

switch (color) {

case RED:

System.out.println("red");

break;

case BLUE:

System.out.println("blue");

break;

case YELLOW:

System.out.println("yellow");

break;

default:

System.out.println("default");

switch注意事项

case 里面必须跟 break,不然程序会一个个 case 执行下去,直到最后一个 break 的 case 或者 default 出现

case 条件里面只能是常量或者字面常量,而且不能为null,否则编译报错

default 语句可有可无,最多只能有一个

建议在switch语句前判断参数是否为null:switch的参数不能为null,否则会报空指针异常【null的类型不确定】

public class Demo {

public static void main(String[] args) {

new Demo().go(null);

}

public void go(String str) {

switch (str) {

case "null":

System.out.println("null");

break;

case "123":

System.out.println(123);

break;

default:

System.out.println("default");

}

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【每日算法Day 95】美团笔试题:四面体方案个数
下一篇:PyTorch自定义CUDA算子教程与运行时间分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~