switch参数支持的类型
2017-09-08 10:20
169 查看
switch(expr)中,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式。其中整数表达式可以是基本类型int或其对应的包装类型Integer,当然也包括不同长度的整型,例如:short。由于btye,short和char类型的值都可以被隐式的转换为in类型,因此这些类型以及他们的包装类型都可以作为switch的表达式里。
与switch对应的是case语句,case语句之后可以是直接的常量数值,例如1,2.也可以是一个常量计算式,例如1+1.还可以是final类型的变量(final变量必须是编译时的常量),例如final int a=0,但是不能是变量或者带有变量的表达式,例如i*2,当然更不可能是浮点型数例如1.0。
在java jdk7.0中,switch开始支持string类型了,从本质上来讲,switch对字符串的支持,其实是int类型值的匹配,他的实现原理如下:通过对case后边的string对象调用hashCode()方法,得到一个int类型的hashCode()函数,获取一个hash值(int 类型)。用这个hash值来匹配所有的case.如果没匹配成功,说明不存在,如果匹配成功了,接着会调用字符串的String的equals()方法进行匹配。因此可以看出String变量不能为null.同时,switch的case自居中使用的字符串也不能为null.
与switch对应的是case语句,case语句之后可以是直接的常量数值,例如1,2.也可以是一个常量计算式,例如1+1.还可以是final类型的变量(final变量必须是编译时的常量),例如final int a=0,但是不能是变量或者带有变量的表达式,例如i*2,当然更不可能是浮点型数例如1.0。
在java jdk7.0中,switch开始支持string类型了,从本质上来讲,switch对字符串的支持,其实是int类型值的匹配,他的实现原理如下:通过对case后边的string对象调用hashCode()方法,得到一个int类型的hashCode()函数,获取一个hash值(int 类型)。用这个hash值来匹配所有的case.如果没匹配成功,说明不存在,如果匹配成功了,接着会调用字符串的String的equals()方法进行匹配。因此可以看出String变量不能为null.同时,switch的case自居中使用的字符串也不能为null.
相关文章推荐
- JAVA中switch是否支持String类型参数?
- Java的switch是否支持String作为参数,还支持哪些类型?
- 实测switch支持的参数类型
- switch所支持的参数类型
- Java的switch是否支持String作为参数,还支持哪些类型?
- switch() 参数支持类型
- 【java】switch case支持的6种数据类型
- 深入解析Swift中switch语句对case的数据类型匹配的支持
- java switch语句的参数类型(转帖)
- Java中switch都可以支持哪些数据类型
- java的switch表达式支持的类型
- jdk1.7的switch语句支持String数据类型了
- 重载操作符时不管类成员还是名字空间成员,对于参数都支持类型转换
- SQL Server 2005 存储过程不支持数组类型参数的变通办法
- Spring Boot系列九 spring mvc的@RequestMapping支持的方法参数类型和返回类型
- switch接受的参数类型
- c语言创建支持多参数多类型的函数
- Android中ksoap实现SOAP远程调用,支持字符串、数值、日期类型参数
- C# 实现eval,支持任意个数、任意基本类型的参数
- Java Switch支持的类型问题