黑马程序员技术交流社区

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

作者: 没落NOKIA    时间: 2015-1-6 22:10
标题: switch语句的问题
switch语句的内部运行机制是怎么样的?为什么没有break关键字会产生意想不到的执行效果
作者: 牛牛宝    时间: 2015-1-6 22:49
首先说一下switch的格式:
switch(表达式){
case 1:
    执行语句;
    break;
case 2:
    执行语句;
    break;
....
default:
   执行语句;
    break;
}
calse的值与表达式的值相匹配,哪个case的值匹配上就执行哪个case里的执行语句,遇到break就结束,如果都匹配不上就执行default里的语句

作者: 寻觅    时间: 2015-1-6 23:35
break;语句其实就是一个跳转,源文件在编译后成为中间字节码class文件,class在程序启东市会被加载到内存中的一块区域,你可以说它是方法区,在内存中还有一小块内存区域叫程序计数器,这个程序计数器就是在JVM读.class文件时记录代码的位置的,你可以认为它存的就是行号。这里我们回来看break;当程序执行到这里时会检测,看break后面是否有标记(其实就是行号),有标记就将程序要执行的点移到标记位置,没有的话就移到本层循环的外面(也是依据行号)。




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