A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 没落NOKIA 中级黑马   /  2015-1-6 22:10  /  1408 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

switch语句的内部运行机制是怎么样的?为什么没有break关键字会产生意想不到的执行效果

2 个回复

倒序浏览
首先说一下switch的格式:
switch(表达式){
case 1:
    执行语句;
    break;
case 2:
    执行语句;
    break;
....
default:
   执行语句;
    break;
}
calse的值与表达式的值相匹配,哪个case的值匹配上就执行哪个case里的执行语句,遇到break就结束,如果都匹配不上就执行default里的语句
回复 使用道具 举报
break;语句其实就是一个跳转,源文件在编译后成为中间字节码class文件,class在程序启东市会被加载到内存中的一块区域,你可以说它是方法区,在内存中还有一小块内存区域叫程序计数器,这个程序计数器就是在JVM读.class文件时记录代码的位置的,你可以认为它存的就是行号。这里我们回来看break;当程序执行到这里时会检测,看break后面是否有标记(其实就是行号),有标记就将程序要执行的点移到标记位置,没有的话就移到本层循环的外面(也是依据行号)。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马