本帖最后由 金鑫 于 2012-11-15 13:32 编辑
switch(x){ //因为x=1,所以进入case:1
case 1:
switch(y){ //y=2,所以case1的switch继续跳,进入case 2
case 1:i++;break;
case 2:j++;break; //程序跳入了这里,j++,所以j = 1
default:i++;j++;
}
case 2: //因为case1里没有break关键字,所以执行完case1之后,会继续执行case 2,这种现象也叫break穿透
i++;j++;break; //程序跳入这里,i++之后,i = 1; 因为在第一个case里面,j的值是1,所以这里j++, j = 2;这里有了break,程序执行完后就跳出,最终结果是i = 1, j = 2;
default:i++;j++;
}
System.out.println("i="+i);
System.out.println("j="+j);
}
}
普通switch:
switch(x){
case 1:
表达式;
break;
case 2:
表达式;
break;
case 3:
表达式;
break;
default:
表达式;
}
因为以上的case里面有break关键字,所以switch只会执行一个case中的表达式,或者执行default中的表达式。
switch穿透: 因为case中没有break,所以会一直执行表达式1,表达式2,表达式3,表达式4直到default中的break来结束switch。如果switch中没有break,那么就会把switch中所有的表达式全部执行,直到程序结束。
switch(x)
{
case 1:
表达式1;
case 2:
表达式2;
case 3:
表达式3;
default:
表达式4;
break;
} |