[JAVA]你见过这样的switch吗?
2008-03-10 21:54
316 查看
下面这段代码:
int i = 20;
switch(i){
default:
System.out.println("default");
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
}
我惊讶地发现它竟然输出了如下结果:
default
1
还是break语句的问题, 当程序在case中找不到匹配项的时候会跳转到default语句块执行, 由于default语句块里面没有break的跳出语句, 程序将继续向下执行, 直到遇到一个break, 虽然我们平时我们做项目的时候有严格的编码规范, 一般不会遇到诸如此类的问题, 但是我在面试的时候就遇到了, 而且当时心一慌就答错了, 当然甚至还怀疑这是否能编译通过.
不过在.NET中强制要求在default的末尾追回break语句, 所以这个问题在.NET平台下不会出现.
int i = 20;
switch(i){
default:
System.out.println("default");
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
}
我惊讶地发现它竟然输出了如下结果:
default
1
还是break语句的问题, 当程序在case中找不到匹配项的时候会跳转到default语句块执行, 由于default语句块里面没有break的跳出语句, 程序将继续向下执行, 直到遇到一个break, 虽然我们平时我们做项目的时候有严格的编码规范, 一般不会遇到诸如此类的问题, 但是我在面试的时候就遇到了, 而且当时心一慌就答错了, 当然甚至还怀疑这是否能编译通过.
不过在.NET中强制要求在default的末尾追回break语句, 所以这个问题在.NET平台下不会出现.
相关文章推荐
- 今天学习时突然联想到这样一个有趣但无用的问题:利用C语言(不能是其他语言)求两个整数的较大/小值-----要求不用if、三目?、switch、循环、数组、加减乘除求余、位运算符以及任何库函数
- java基础之 “if ”条件分支语句和switch开关语句
- java switch语句应用举例
- java 隐式转换 类型转换 字节数 switch
- Java7版本: switch语句支持String、Enum类型(JDK1.5)与原来byte、short、char和int.
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- Java:switch语句与c语言的不同,大写转换方法
- java中switch用法
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- Java中使用switch-case的用法及注意事项
- 五、Java基础---------if else、switch总结
- 其实你可以这样折腾java enum
- java的switch-case的使用
- [改善Java代码]在switch的default代码块中增加AssertionError错误
- java基础(六) switch语句的深入解析
- java基础06 switch
- 这个家伙糟厉害 函数 这样写!有谁见过这样写的吗?
- 反编译java的switch, if else 语句
- java中的switch语句中break和continue的区别--------总算是弄明白了