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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int x=2,y=3;
switch(x)
{
        default:
                y++;
        case 3:
                y++;
        case 4:
                y++;
}
System.out.println("y="+y);
A.  3
B.  4
C.  5
D.  6


我知道有case穿透,   最后的y++是  先赋值,再自增,赋值是5,而后自增到6,但是为什么输出打印的时候输出的是6啊- - 不是先赋值么

8 个回复

倒序浏览
class  Noname1{
        public static void main(String[] args) {
                //9.下面程序执行的结果是?(  )
                int x=2,y=3;
switch(x)
{
        default:
                y++;
        case 3:
                y++;
        case 4:
                y++;
        System.out.println(y);
               
}
System.out.println("y="+y);


                System.out.println("Hello World!");
        }
}
我加了一句打印最后一个case之后接着的y值,输出的还是6
那么先赋值,赋值的5跑到哪里去了,怎么才能输出出5呢
回复 使用道具 举报
加个break把 你就能得到5 了
回复 使用道具 举报
擎天柱 来自手机 中级黑马 2016-1-17 18:09:43
板凳
前置++与后置++单独用时相当于y=y+1,没有先后顺序
回复 使用道具 举报
case穿透是什么?
回复 使用道具 举报
因为你这里++运算符是单独使用的 每次都是表示y=y+1
所以最后的y=y+1+1+1=6
如果你改成这样
int x=2,y=3;
switch(x)
{
         default:
                 y++;
         case 3:
                 y++;
         case 4:
         int z=y++;
}
System.out.println("y="+z);

那这个时候z就是5,输出也是y=5
回复 使用道具 举报
qt520 中级黑马 2016-1-18 08:11:25
7#
学习了,对++理解还不够
回复 使用道具 举报
楼主的答案应该是4吧。
回复 使用道具 举报
switch语句每个情况后边应该加个break的,那样就不会出现现在的情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马