分析java switch支持的数据类型

Javaswitch支撑的数据类型详解

目录

switch支撑的数据类型

支撑的数据类型

完成

switch支撑的10种数据类型和留意事项

switch支撑的数据类型

switch留意事项

switch支撑的数据类型

随着Java的不断发展,switch支撑的数据类型也有了改变,下面就来讲述switch如何来完成对新增数据类型的支撑。

支撑的数据类型

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

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

枚举类型:Enum(JDK5+开始支撑)

字符串类型:String(JDK7+开始支撑)

完成

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

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

关于这一点,咱们能够验证的,下面举例验证switch如何完成对枚举数据类型的支撑。
图片[1]-分析java switch支持的数据类型-小白之家

直接上代码:

publicclassSwitchTest{

publicstaticvoidmain(String[]args){

Colorcolor=Color.YELLOW;

switch(color){

caseRED:

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

break;

caseYELLOW:

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

break;

caseBLUE:

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

break;

caseBLANK:

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

break;

default:

System.out.println(“DEFAULT”);

break;

}

}

publicenumColor{

RED(“红色”,1),

YELLOW(“绿色”,2),

BLUE(“蓝色”,3),

BLANK(“黑色”,4);

privateStringname;

privateintindex;

privateColor(Stringname,intindex){

this.name=name;

this.index=index;

}

publicstaticStringgetName(intindex){

for(Colorc:Color.values()){

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

returnc.name;

}

}

returnnull;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetIndex(){

returnindex;

}

publicvoidsetIndex(intindex){

this.index=index;

}

}

}

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

咱们发现多了一个数组Color[]arrayOfColor,本来枚举是再编译的过程中产生了一个新的数组,switch是经过转化成数组的形式来完成对枚举类型的支撑。

咱们经过相同的方式也能够看到switch对String类型的支撑也是经过将String转化为int类型得以完成的,这儿就不再赘述。switch对四种根本数据类型封装类的支撑是经过对封装类的拆箱来完成的点击了解

留意封装类不能为null,不然会报空指针反常的。

switch支撑的10种数据类型和留意事项

switch支撑的数据类型

【牢记不支撑long、double、float及其包装类型】

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

包装数据类型:Character,Byte,Short,Integer

枚举类型:Enum

字符串类型:String(Jdk7+开始支撑)

Colorcolor=Color.RED;

switch(color){

caseRED:

System.out.println(“red”);

break;

caseBLUE:

System.out.println(“blue”);

break;

caseYELLOW:

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的类型不确定】

publicclassDemo{

publicstaticvoidmain(String[]args){

newDemo().go(null);

}

publicvoidgo(Stringstr){

switch(str){

case”null”:

System.out.println(“null”);

break;

case”123″:

System.out.println(123);

break;

default:

System.out.println(“default”);

}

}

},

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论