概述
先声明一点,本人用的时jdk11,进行的探究。
先说结论:switch()的参数类型可以是:int
,byte
,short
;String
;char
;enum
一般我们都是这么使用switch()的,一般括号内参数写的都是int型
public class Demo{
public static void main(String[] args){
int a = 1;
switch(a){
case 1:
System.out.println("我是1");break;
case 2:
System.out.println("我是2");break;
}
}
}
//毫无疑问,括号内是 int 数据,可以编译运行
那么,括号内可以是byte,short,long,float,double,char,String,boolean类型的数据吗?
先说一下结论:
- byte,short,int 没问题
- long,float,double 会报错,但是可以再括号内将他们转化为 int ,就没问题了
- 从jdk1.7开始,String 也可以
- char 也可以
- boolean会报错, 而且boolean是不能强制转换成int的
下面是对每个数据类型的探究:
byte
public class Demo{
public static void main(String[] args){
byte a = 1;
switch(a){
case 1:
System.out.println("我是1");break;
case 2:
System.out.println("我是2");break;
}
}
}
//括号内可以是 byte
short
public class Demo{
public static void main(String[] args){
short a = 1;
switch(a){
case 1:
System.out.println("我是1");break;
case 2:
System.out.println("我是2");break;
}
}
}
//括号内可以是 short
long
public class Demo{
public static void main(String[] args){
long a = 1;
switch(a){
case 1:
System.out.println("我是1");break;
case 2:
System.out.println("我是2");break;
}
}
}
//编译时报错了,说明 long 不行
而且从报错的说明可以看出,switch()括号内的参数要是int型,
而上面的 short,byte,之所以也行,是因为它们在括号内完成了基本数据类型的自动转换,自动转换成int了
再对 long 探究一下,我在括号内把long强制转换成int,看看行不行:
public class Demo{
public static void main(String[] args){
long a = 1;
switch((int)a){
case 1:
System.out.println("我是1");break;
case 2:
System.out.println("我是2");break;
}
}
}
//编译运行都成功了
float
public class Demo{
public static void main(String[] args){
float a = 1;
switch(a){
case 1.0:
System.out.println("我是1.0");break;
case 2.0:
System.out.println("我是2.0");break;
}
}
}
报错情况和 long 差不多
double
public class Demo{
public static void main(String[] args){
double a = 1;
switch(a){
case 1.0:
System.out.println("我是1.0");break;
case 2.0:
System.out.println("我是2.0");break;
}
}
}
情况也和 long,float 的差不多
String
public class Demo{
public static void main(String[] args){
String a = "1";
switch(a){
case "1":
System.out.println("我是1");break;
case "2":
System.out.println("我是2");break;
}
}
}
//String 可以
char
public class Demo{
public static void main(String[] args){
char a = 'a';
switch(a){
case 'a':
System.out.println("我是a");break;
case 'b':
System.out.println("我是b");break;
}
}
}
// char 也行
boolean
public class Demo{
public static void main(String[] args){
boolean a = true;
switch(a){
case true:
System.out.println("我是true");break;
case false:
System.out.println("我是false");break;
}
}
}
//boolean 不行,而且boolean是不能强制转换成int的
枚举类型enum
经过评论区ycxy_ZHT的补充:enum类型也是可以的
最后
以上就是鲤鱼鲜花为你收集整理的Java switch()括号内参数的类型要求的全部内容,希望文章能够帮你解决Java switch()括号内参数的类型要求所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复