java,能否深入讲讲switch原理:没有break是真,但num也不等于3和default啊?为什么?

[b][color=red]没有break是真,但num也不等于3和default啊?为什么?num=2,为什么还会走case 3和default?[/color]
[/b]

[code="java"]public class SwitchTest
{
public static void main(String[] args)
{
int num = 2;
switch (num)
{
case 1:
System.out.println("小白菜");
case 2:
System.out.println("大白菜");
case 3:
System.out.println("方便面");
default:
System.out.println("什么也不吃");
}
}
}[/code]

这个问题。。 其实很好

对于java而言,switch语句有一个特性叫 fallthrough, 就如楼上所说说,条件成立switch开始执行,直到遇到break为。 期间不会再进行case的判断.

但对于C#而言,则没有这样的特性

这个特性,有时候是很好用的,但也很危险,看你怎么用 具体讨论可以看

http://stackoverflow.com/questions/188461/switch-statement-fallthrough-should-it-be-allowed

当num =2时,条件成立switch开始执行,知道遇到break为止,在这里你没有break,那么会运行到default后面。
原理:
1.找到起始执行点:start run point
2.找到退出点:end point