switch为什么只能用int,short,byte,char,而不能用long,String
解决方案 »
- java 怎么改变window鼠标指针样式
- 一个非常基础非常基础的问题,请大侠回答
- 请问:bad file descriptor是什么错误?
- java程序中怎样控制某一线程的执行时间和内存申请大小
- 求:输入汉字,自动输出拼音简码的现成JAVA代码
- 求教:如何改变JSlider(滑杆)的默认出现位置?顶有分!
- Map和Set的区别
- 大侠帮我!为何JComboBox 不能显示???
- 一个我也知道是很菜的问题,在线等待高手解救!
- 得到一个URL下的所有文件列表?
- 将sql中的数据通过ResultSet导入到一个数组后,然后在把那个数组写入到2维表格。但表格输出后没有数据是怎么回事
- java可以做网上聊天工具,或者网络五子棋什么的?
JAVA5以后,,还可以用枚举来进行SWITCH
switch('a') 第一种是char型
char、byte、short都可自动转为int型
switch 只能使用char,int还有 枚举 这三种类型
如果非要原因,顶多,这可以算一个:如果允许long和String,编译器和JVM实现起来会复杂一点点,尤其是:可能无法把switch/case语句编译成时间和空间都非常高效的指令跳转表。
基于执行效率来看吧,所以没做String之类的Switch
如果一定要用string ,用if else 也可以做
不能是长整型long 或其他任何类型。关于枚举型将在后面详细介绍。http://book.51cto.com/art/200709/55571.htm
------------------------------------------------
另外我上会面试时 选项里 还一个Integer 还好我当时不会 也没蒙Integer~
Integer month = 8;
switch(month) {
case 1: System.out.println("January"); break;
case 2: System.out.println("February"); break;
case 3: System.out.println("March"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("May"); break;
case 6: System.out.println("June"); break;
case 7: System.out.println("July"); break;
case 8: System.out.println("August"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December"); break;
default: System.out.println("Invalid month.");break;
}
}面试题我蒙错了~
short s = 100;char c = 100;byte b = 100;都不会报错的。会不会给这个有关。
JDK1.5以后可以自动将基本类型封装成包装类型,自动将包装类型解封成基本类型。或者说,在JDK1.5以后,基本类型和包装类型是一样的了。