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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© guojs 中级黑马   /  2015-8-12 23:59  /  370 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

If  switch  do while   while  for  增强for 迭代器 iterator
        这些语句什么时候用?
        1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。建议使用switch,效率相对较高。
switch(变量){
         case 值:要执行的语句;break;
         …
         default:要执行的语句;
}
在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7中,  呼吁很久String支持也终于被加上了。

在switch语句中,String的比较用的是String.equals,因此大家可以放心的使用。
需要注意的是,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null。
具体原因大家可以看一下switch的实现过程就懂了。

如果switch传入的null,那么在运行时对一个null对象调用hashCode方法会出现NullPointerException。
如果switch的case写的是null,那么在编译时无法求出hashCode,因此在编译时就会报错了。
switch支持String只是一个语法糖,由javac来负责生成相应的代码。底层的JVM在switch上并没有进行修改。

看完代码是不是有种豁然开朗的节奏。
接下来再说说switch的工作原理。
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
           就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;
           2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
           3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
        2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
        3)、当某些语句需要执行很多次时,就用循环结构。
        while和for可以进行互换。
        区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。

break:作用于switch ,和循环语句,用于跳出,或者称为结束。
break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。

continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马