精华内容
下载资源
问答
  • Java switch 支持的类型

    2010-08-27 16:20:19
    1.javaswitch 支持的类型 char s='1';//s只可以是 byte,short,int,char switch(s) { } 2.as3,switch 支持String类型
    1.java中switch 支持的类型
    char s='1';//s只可以是 byte,short,int,char
    switch(s)
    {


    }
    2.as3,switch 支持String类型
    展开全文
  • 常见支持类型为int,byte,short,char及枚举类型。...参考资料:1、java switch支持的数据类型 2、java中使用switch-case的用法及注意事项超全总结 转载于:https://www.cnblogs.com/simon-c/p/5365259.html...

    常见支持类型为int,byte,short,char及枚举类型。以上是JDK1.6以前的版本。JDK1.7时,又增加了String。

    参考资料:1、java switch支持的数据类型

    2、java中使用switch-case的用法及注意事项超全总结

    转载于:https://www.cnblogs.com/simon-c/p/5365259.html

    展开全文
  • switch表达式后面数据类型只能是byte,short,char,int四种整型类型,枚举类型java.lang.String类型(从java 7才允许),不能是boolean,long,float,double类型。在网上看到好多文章,说switch支持byte,short,...

    182d9efb473a203b1315a4ab086d4b23.png

    switch表达式后面的数据类型只能是byte,short,char,int四种整型类型,枚举类型和java.lang.String类型(从java 7才允许),不能是boolean,long,float,double类型。

    在网上看到好多文章,说switch还支持byte,short,char,int 的包装类,首先可以肯定说switch不支持这些包装类,但是如下的代码又是正确的:public static void main(String[] args) {

    switch (new Integer(45)) {

    case 40:

    System.out.println("40");

    break;

    case 45:

    System.out.println("45");//将会打印这句

    break;

    default:

    System.out.println("?");

    break;

    }

    }

    可以打印正确的结果,在挨着挨着试完Byte,Short,Character,Integer后发现都可以正确打印,于是便说switch也支持byte,short,char,int的包装类。这种说法不完全正确,之所以switch能够支持他们的包装类,是因为自动拆箱(从JDK1.5开始支持自动拆箱和自动装箱,自动拆箱就是自动将引用数据类型转化为基本数据类型,自动装箱就是自动将基本数据类型转化为引用数据类型)的原因,下面使用jclasslib软件打开上面的.class文件,0 new #2 创建一个Integer类的对象

    3 dup 将对象的标识压入栈顶部

    4 bipush 45 将整形45压入栈中

    6 invokespecial #3 > 调用Integer类型的构造方法

    9 invokervirtual #4 调用intValue()方法

    12 lookupswitch 2

    40:40(+28)

    45:51(+39)

    defalut:62(+50)

    40 getstatic #5 获得标准输出流

    43 ldc #6 <40> 从常量池中将40的索引压入栈中

    45 invokevirtual #7 调用println()方法

    48 goto 70 (+22)

    51 gestatic #5

    54 ldc #8 <45>

    56 invokevirtual #7

    59 goto 70 (+11)

    62 getstatic #5

    65 ldc #9>

    67 invokevirtual #7

    70 return

    从上面的第5行我们可以看出编译器自动调用了intValue()方法,如果是使用Byte会自动调用byteValue()方法,如果是Short会自动调用shortValue()方法,如果是Integer会自动调用intValue()方法。switch 的查找原理是使用key-offset在目标表格中查找的,lookupswitch后面的数字和goto后面的数字都是有规律的。

    因此switch表达式后面的数据类型只支持byte,short,int整形类型、字符类型char、枚举类型和java.lang.String类型。

    展开全文
  • Java switch支持的数据类型

    千次阅读 2019-06-12 15:45:50
    随着Java的不断发展,switch支持的数据类型也有了变化,下面就来讲述switch如何来实现对新增数据类型的支持。 支持的数据类型 基本数据类型:int,byte,short,char 基本数据类型封装类:Integer,Byte,Short...

    随着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;
    		}
    		
    	}
    
    }

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

    在这里插入图片描述
    我们发现多了一个数组Color[] arrayOfColor,原来枚举是再编译的过程中产生了一个新的数组,switch是通过转化成数组的形式来实现对枚举类型的支持。
    我们通过相同的方式也可以看到switch对String类型的支持也是通过将String转化为int类型得以实现的,这里就不再赘述。
    switch对四种基本数据类型封装类的支持是通过对封装类的拆箱来实现的点击了解
    注意封装类不能为null,否则会报空指针异常的。

    展开全文
  • switch表达式后面数据类型只能是byte,short,char,int四种整型类型,枚举类型java.lang.String类型(从java 7才允许),不能是boolean,long,float,double类型。在网上看到好多文章,说switch支持byte,short,...
  • 到目前为止switch支持这样几种数据类型:byte short int char String 。但是,作为一个程序员我们不仅要知道他有多么好用,还要知道它是如何实现,witch对整型支持是怎么实现呢?对字符型是怎么实现呢?...
  • java switch支持的数据类型有:byte类型、short类型、char类型、int类型、枚举类型和“java.lang.String”类型(从java7才支持);但不支持long、float、double、boolean类型。switch表达式后面的数据类型只能是byte,...
  • java的switch支持String类型的原理 Java的Switch从1.7之后开始支持String类型,那么是怎么做到那? 下面是一个简单测试,将TestSwitchString.class用javap进行反编译,查看字节码。可以看到在17行先调用了String...
  • switch支持哪些类型? (1)最早时,只支持int、char、byte、short这样整型基本类型或对应包装类型Integer、Character、Byte、Short常量,包装类型最终也会经过拆箱为基本类型,本质上还是只支持基本类型 (2...
  • JDK7以后,switch可以使用整形和枚举常量以及String类型。 整形包括整数类型和Integer包装类型。byte short char boolean 可以隐含转换为int类型。其对应包装类也可以。 String类型这个新特性是JDK7以后加上,...
  • java switch支持的数据类型

    千次阅读 2016-12-01 09:03:28
    JAVA支持的数据类型有五种 他们分别是: byte、char、short、int、枚举 以上是JDK1.6以前的版本。JDK1.7时,又增加了String,所以相对于JDK1.7而言就是六种了 分别是:byte、char、short、int、枚举 、String
  • switch表达式后面数据类型只能是byte,short,char,int四种整形类型,枚举类型java.lang.String类型(从java 7才允许),不能是boolean类型。在网上看到好多文章,说switch支持byte,short,char,int 包装类,...
  • java switch如何支持的String类型Switch语句中支持的类型代码示例 Switch语句中支持的类型 整数类型 byte short int 单字符型 char 引用类型 Enum Byte Short Integer Character String 代码示例 编写一段...
  • 主要介绍了Java Switch对各类型支持实现原理,文中通过示例代码介绍非常详细,对大家学习或者工作具有一定参考学习价值,需要朋友可以参考下
  • 最近在学习Groovy,发现Groovy中的Switch case 比Java中的Switch case强大,于是了解了Java中的Switch case支持的数据类型是有限的,包int,char,String 和enum四种类型。 之前写android代码的时候,前面3中经常...
  • javaswitch支持的类型

    千次阅读 2013-07-01 20:17:24
    Java7之前,switch只能支持 byte、short、char、int或者其对应封装类以及Enum类型。在Java7中,呼吁很久String支持也终于被加上了。 例如,下面是一段switch中使用String示例代码。 public ...
  • 我们都知道java的switch支持6种数据类型:int、可以转换为intbyte、char、short以及String和枚举类型。那么支不支持基本类型的包装类型呢? 包装类型能放在switch后面吗? 下面两段代码都能正常运行并输出 1 ,...
  • java switch方法支持的数据类型 JDK1.5之前只支持byte,short,char,int四种数据类型。 2.JDK1.5的时候增加四种基本数据类型的封装类和枚举类型,Byte(byte),Short(short),Character(char),Integer(int)...
  • Java 12 中对 switch 的语法更友好了,建议大家看下栈长在Java技术栈微信公众号分享的《switch case 支持的 6 种数据类型!》,对理解 switch 更有帮助。那么在 Java 12 中可以怎样玩 switch?先来定义一个枚举类:...
  • javaswitch支持的类型

    千次阅读 2014-04-18 20:35:37
    在JDK1.6版本中,switch后面括号里面只能放int类型的值,注意是只能放int类型, 但是放byte,short,char类型的也可以。 是因为byte,short,shar可以自动提升(自动类型转换)为int。 而不能放long型...
  • 每日趣味问答来了 大厂面试题: 下面switch语句中,x可以是哪些类型的数据:() switch(x) { default: System.out.println(“Hello”);...java8,switch支持10种类型 基本类型:byte char short int 包装类 :Byte
  • JavaSwitch支持byte、short、char、int四种基本类型,在JDK1.5中支持了枚举类型以及byte、short、char、int四种基本数据类型的包装类,在JDK1.7中支持了String类型,不支持long类型以及long包装类。 一、底层...
  • Javaswitch语句支持的类型 支持的类型:byte、short、int、char 不支持的类型:float、double、long、boolean 在JDK1.5之后,switch语句支持了枚举(enum) 在JDK1.7之后,switch语句支持了字符串(String)
  • java switch是如何支持String类型的

    万次阅读 2018-07-29 09:46:33
    那有没有同学思考过,java是如何支持String类型的? 我们看下面这段代码: public class SwitchString { public static void main(String[] args) { switch (args[0]) { case "A" :...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,292
精华内容 516
关键字:

javaswitch支持的类型

java 订阅