黑马程序员技术交流社区

标题: java switch 不加 break 继续执行 下一个case(不用匹配条件) 这... [打印本页]

作者: 开到荼靡    时间: 2015-5-20 16:17
标题: java switch 不加 break 继续执行 下一个case(不用匹配条件) 这...
java switch 不加 break 继续执行 下一个case(不用匹配条件) 这个设计是因为什么?


打印 1 2

那么问题来了?
java switch 不加 break 继续执行 下一个case(不用匹配条件) 这个设计是因为什么?
要是打印 1 3 还可以理解,打印 1 2 就想不通了。
难道是sun那帮骚年留下的bug?



作者: pvbj0314    时间: 2015-5-20 21:02
当然不是,这是为了,让多个case可以共用同一语句块。比如一年中12个月,31天的有7个月,如果处理方法相同,没必要写7遍。只要在第7个case下写这些语句就行了。
作者: 开到荼靡    时间: 2015-5-20 23:53
pvbj0314 发表于 2015-5-20 21:02
当然不是,这是为了,让多个case可以共用同一语句块。比如一年中12个月,31天的有7个月,如果处理方法相同 ...

答非所问哦亲
作者: 谷歌    时间: 2015-5-21 00:03
switch是选择结构,但并非是单选结构。可以想象一下,如果switch在每一次执行完对应case以后自动帮你break结束,那么除去default,他只会执行单选。而break是可选的这一设计,是为了让用户来决定自己写的switch是单选、多选还是混合选择。
作者: pvbj0314    时间: 2015-5-21 15:10
开到荼靡 发表于 2015-5-20 23:53
答非所问哦亲

“那么问题来了?
java switch 不加 break 继续执行 下一个case(不用匹配条件) 这个设计是因为什么?
要是打印 1 3 还可以理解,打印 1 2 就想不通了。
难道是sun那帮骚年留下的bug?”
你问的不是这些吗?答案就是“不是”“sun那帮骚年留下的bug”。我也说明这样设计的理由,"让多个case共用同一语句块",后面又例举一个需要多个case共用同一语句块的情况。
这怎么会是答非所问呢?
作者: 开到荼靡    时间: 2015-5-21 16:36
pvbj0314 发表于 2015-5-21 15:10
“那么问题来了?
java switch 不加 break 继续执行 下一个case(不用匹配条件) 这个设计是因为什么?
要 ...

这仅仅是你以为的设计原因。:)




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