下面这段代码:

}


你觉得它会输出什么呢? 或者你没有猜错, 它输出了2, 但是如果程序是这样写的呢?

[JAVA]你见过这样的switch吗?int i = 20;
}


我惊讶地发现它竟然输出了如下结果:
default
1

还是break语句的问题, 当程序在case中找不到匹配项的时候会跳转到default语句块执行, 由于default语句块里面没有break的跳出语句, 程序将继续向下执行, 直到遇到一个break, 虽然我们平时我们做项目的时候有严格的编码规范, 一般不会遇到诸如此类的问题, 但是我在面试的时候就遇到了, 而且当时心一慌就答错了, 当然甚至还怀疑这是否能编译通过.


不过在.NET中强制要求在default的末尾追回break语句, 所以这个问题在.NET平台下不会出现.

相关文章: