thinging in java中有这段代码
public Shape next() {
switch(rand.nextInt(3)) {
default:
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
搜了一下,关于default的位置的讨论
http://www.iteye.com/problems/67170
--------------
我认为比较合适的解释就是:在可以完全预见的情况下,只有0、1、2三种值,所以default放在最前面,表明了default的情况不可能发生。default后面没有return,所以就相当于default 和case 0 公用一段return new Circle();
----------------------------------
我又测试了几段代码
int i = 0;
switch (i) {
default:
//break;
case 0:
System.out.println("0000");
//break;
case 1:
System.out.println("1111");
//break;
case 10:
System.out.println("101010");
break;
}
当i=0时
0000
1111
101010
当i=1时
1111
101010
当i=9时
0000
1111
101010
当i=10时
101010
---------------
一开始没理解i=0,1,9时,为什么101010也会打印出来,后来才恍然大悟
理解这个的关键是case(包括default)若没有break,就相当于case穿透/自动贯穿/fall through等等这些术语
比如上面的代码:因为default、case0 都没有break,那么default、case0、case1是公用一段return的!!
自此,真相大白,世界安静了
继而感叹自己理解力太弱了。。。。。哎