黑马程序员技术交流社区

标题: switch语句? [打印本页]

作者: 魏冬    时间: 2012-11-16 18:29
标题: switch语句?

public class Switch {
        public static void main(String[] args){
                int i=65;
                switch(i+1){
                case 65:
                        System.out.println("A");
                case 66:
                        System.out.println("B");
                case 67:
                        System.out.println("C");
                        break;
                default:
                        System.out.println("D");
                               
                }
        }

}
为什么case 65不走呢?他也没有break啊???
作者: 许坤    时间: 2012-11-16 19:04
貌似它只能找他自己或者比它大的case;而67带break;所以就停下了!如果不带i+1;而是i=65的话那就连带着65也执行了!
作者: 初艳春    时间: 2012-11-16 22:38
int i=65;
                switch(i+1){
                case 65:
                        System.out.println("A");
                case 66:
因为i的初始值为65,但是switch(i+1)时,i=66,所以case 65就跳过了,直接执行case 66。
作者: 王斌    时间: 2012-11-22 10:59
结果  B ,C   switch  case 是开关语句,遇到符合表达式语句才会开始执行,还好顺序执行,直到遇到break会跳出

switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}
default就是如果没有符合的case就执行它,default并不是必须的.
case后的语句可以不用大括号.
switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.
一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.



作者: 朱宏青    时间: 2012-11-22 15:44
...怎么会去走65?不然你这i+1何用?
作者: 何伟    时间: 2012-11-30 12:28
因为65不满足条件i=i+1   switch语句是在遇到满足条件的case并且该case下有break才会停止运行,如果case下不是break而是continue那么语句还会执行,直到遇到   default ,   default下面的break是可以省略的   
作者: 张森    时间: 2013-1-3 10:51
CASE要匹配才执行啊    你+1后是 66 那么他就匹配66啊   当然就不会执行CASE65那里了    然后你CASE66后面没有break 所以他就还会匹配下面的67
作者: ♂老男孩♀    时间: 2014-7-13 14:09
switch(i+1){
作者: ♂老男孩♀    时间: 2014-7-13 14:11
switch(i+1){         亲她的这个i+1了,结果是六十六了  所以走66 ,66语句结束没遇到break 她继续执行67,遇到break后跳出本循环  所以输出语句是BC 对吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2