黑马程序员技术交流社区
标题:
谁能解释一下这两个题答案---原来我连switch都没搞懂啊!!!
[打印本页]
作者:
zhiyuan0932
时间:
2014-9-16 10:31
标题:
谁能解释一下这两个题答案---原来我连switch都没搞懂啊!!!
第六题
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);//y=6
class Demo
{
public static void main(String[] args)
{
show(0);//15
show(1);//14
}
public static void show(int i)
{
switch(i)
{
default:
i+=2;
case 1:
i+=1;
case 4:
i+=8;
case 2:
i+=4;
}
System.out.println("i="+i);
}
}
作者:
happymouse
时间:
2014-9-16 11:08
本帖最后由 happymouse 于 2014-9-16 11:40 编辑
switch语句执行的特点是假如有语句匹配,将执行该句并且会不再判断并执行下面的语句(当然是没有break,有的话就结束了)
当没有匹配值时,不管default放在什么位置,它总是在最后一个处理,然后继续向下处理,直到遇到第一个break结束。当有匹配值时,default假如放在匹配语句的前面,将不再执行,否则同样会执行,直到遇到第一个break结束
第一题:
其实执行了两遍,第一遍匹配执行的时候发现没有匹配值然后就去执行default语句,然后顺序执行default后面的语句,故结果是y=6
第二题:
show(0)
这个也没有匹配值,原因和第一题相同,故结果是i=15
show(1)
有匹配值,所以从匹配值处开始计算,但default语句在匹配语句前面,故不再执行,故结果是i=14
作者:
haixiaoxiao
时间:
2014-9-16 14:28
学习了
作者:
家进
时间:
2014-9-16 14:44
两个小程序的原因都是没有终止循环,建议楼主可以去了解下barak和continue关键字的用法
作者:
xplcc
时间:
2014-9-16 14:57
楼上正解
作者:
海燕
时间:
2014-9-16 16:07
难道你的代码没有复制完?
作者:
zhiyuan0932
时间:
2014-9-17 12:17
happymouse 发表于 2014-9-16 11:08
switch语句执行的特点是假如有语句匹配,将执行该句并且会不再判断并执行下面的语句(当然是没有break,有的 ...
恩呢,写的很仔细,终于看懂了!!:)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2