记switch的一个坑
来源:互联网 发布:创维酷开软件下载 编辑:程序博客网 时间:2024/05/16 05:41
当初学习java的时候只是大概记得switch可以接受整形,枚举类型和String类型(java7),因为平时用的并不是太多,所以没有进行过深入的研究。
今天就遇到了一个这方面的问题,所以有必要把switch可以接受的参数总结一下。
首先由byte登场,
public class Test{ public static void main(String[] args) { byte x = 2; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break; }
然后是short类型
short x = 2; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break;
还有int类型
int x = 2; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break;
再来试试char类型
char x = 1; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break;
他们的执行结果都是符合预期的,会进入case2.
然而问题出现在了long类型上,
long x = 2; switch(x){ case 1L : System.out.println("case1"); break; case 2L : System.out.println("case2"); break; case 3L : System.out.println("case3"); break; case 4L : System.out.println("case4"); break;
Test.java:6: 错误: 不兼容的类型: 从long转换到int可能会有损失 switch(x){
这说明switch()只可以接受int或者能够自动提升为int类型的类型,对于大于int类型的long自然就是拒绝的了。
还有boolean类型,我也做了一下实验
boolean x = false; switch(x){ case true : System.out.println("case1"); break; case false : System.out.println("case2"); break;
Test.java:6: 错误: 不兼容的类型: boolean无法转换为int结果也是不可以的
同样的对于浮点型也会出现类似的错误
不兼容的类型: 从float转换到int可能会有损失 不兼容的类型: 从double转换到int可能会有损失
所以说switch能够接受的参数只有byte、char、short、int、枚举、String(java7)这几种。
0 0
- 记switch的一个坑
- Switch语句的一个坑 & 一个妙用
- switch 语句的一个小谜团
- java switch语句的一个例子
- Javascript中switch case的一个细节
- 关于switch语句的一个小代码
- Switch case的一个小问题...
- js语句switch的一个小案例
- java switch语句的一个例子
- OCP 关于switch的坑
- 自定义一个Switch
- 一个Switch控件
- java switch case后跟一个范围的问题
- Switch Case语句中多个值匹配一个代码块的写法
- 利用switch ..case写一个简单的计算机函数.
- 用switch...case设计一个简单的运算器
- Switch Case语句中多个值匹配一个代码块的写法
- showmycode反编译apk代码时switch的一个解析例子
- 《C++ Primer 第五版》学习笔记-第四章-表达式
- 给现有MVC 项目添加 WebAPI
- Bit Manipulantion 技巧
- 机器学习&深度学习资料
- 网络工程师成长经验漫谈(下)
- 记switch的一个坑
- qml之FileDialog
- 【mybatis】环境配置及查询测试
- 数组方式进行表单提交
- 淘宝对百度蜘蛛开放部分目录,这是马云给百度机会?
- Wasserstein GAN
- 【死磕Java并发】-----Java内存模型之重排序
- 用cygwin配置ssh
- c++11 尾随返回类型