首页 > 试题广场 >

以下程序输出() public static void ma

[单选题]
以下程序输出()
public static void main(String[] args) {
   int num = 2;
   switch (num) {
   case 1:
        ++num;
   case 2:
        ++num;
   case 3:
        ++num;
   default:
        ++num;
   break;
   }
   System.out.println(num);
 }
}

  • 2
  • 3
  • 4
  • 5
记住一点,遇到break才跳出
发表于 2019-03-17 22:41:13 回复(3)
匹配到case 2 num->3 但是其后没有break,所以继续执行case 3 num->4、default  num->5而后结束,所以答案为 5
注意细节!
发表于 2019-03-12 21:17:53 回复(0)
本题考查了switch语句中的“穿透”概念。
发表于 2019-03-21 11:36:07 回复(0)

i++ 是先赋值,然后再自增

++i 是先自增,然后再赋值


发表于 2020-02-25 18:14:44 回复(1)
小心循环结束语句,switch遇到break才会退出循环。
发表于 2021-04-23 19:13:59 回复(0)
  • switch中,当某个case满足条件后,在没有遇到break之前,都会一直执行,穿透原则。
    switch
发表于 2022-04-05 21:58:20 回复(0)
没有break会发生case穿透现象
发表于 2021-06-26 10:25:04 回复(0)
default不是全都不走的时候,才走default吗,num已经走了case=2和case=3的情况了,怎么还走default?
发表于 2020-05-26 14:32:39 回复(2)
case穿透
发表于 2022-03-10 15:52:41 回复(0)
前++是先自加再使用
发表于 2021-11-06 15:04:17 回复(0)

虽然看起来简单,但是很容易错。switch关键字要弄清楚,由于2中没有break,所以不退出,会一直执行下去

编辑于 2021-10-16 21:03:11 回复(0)
没有break,不会跳出,在case2后继续执行case3之后的代码
发表于 2020-10-09 22:19:36 回复(0)
若没有break会穿透
发表于 2019-09-30 08:55:12 回复(0)
害。记错了。我一直记得default是上面都不满足才会走。原来没有break 也会走呀!
发表于 2021-11-15 09:32:53 回复(0)
要考虑程序的击穿,和自增自减运算符的位置造成的运算差异。
发表于 2021-04-07 08:22:27 回复(0)
<p>break 没写在case 里面都会渗透!</p>
发表于 2020-12-23 19:24:15 回复(0)
擦,就是考察break,把这个忘了
发表于 2023-09-16 21:59:51 回复(0)
*****穿透
编辑于 2022-12-05 12:52:15 回复(0)
这个题要注意case后面break语句有没有,没有的话执行完第一个符合条件的case后,后面有符合条件的case还是会执行
发表于 2022-08-26 20:53:45 回复(0)
不是传值吗?
发表于 2022-05-21 18:47:40 回复(0)