黑马程序员技术交流社区

标题: 能看出这段代码 输出结果是多少吗 [打印本页]

作者: Sheng.cn    时间: 2015-5-1 23:29
标题: 能看出这段代码 输出结果是多少吗
本帖最后由 Sheng.cn 于 2015-5-1 23:31 编辑

class  Test
{
public static void main(String[] args)
{
  int x =5;
  switch(x++)
  {
   default:
    System.out.println("a:"+x);
   case 6:
    System.out.println("b:"+x++);
   case 7:
    System.out.println("c:"+x);
   case 8:
    System.out.println("d:"+x);
  }
}
}


作者: 魔心邪    时间: 2015-5-2 01:15
受教了,大大的有啊
作者: wkz_crystal    时间: 2015-5-2 01:23
呵呵,结果就是全部都会输出:a:6 b:6 c:7 d:7,因为default中没有break语句,会一直执行下去!
作者: Demomiku    时间: 2015-5-2 09:15
a:6
b:6
c:7
d:7
作者: 米江波    时间: 2015-5-2 09:55
为什么我看不出来是6.6.7.7啊 我看的是6.7.7.7
作者: Dylon    时间: 2015-5-2 10:11
米江波 发表于 2015-5-2 09:55
为什么我看不出来是6.6.7.7啊 我看的是6.7.7.7

x++语句会先把x的值赋给输出判断和输出语句,然后再执行x+1;所以switch判断语句接收的是x的值,之后x的值变为6,case语句中没有5这个数值,所以直接执行defaut语句,输出a:6;由于语句中没有break语句,所以程序会继续往下执行,case6语句中,同样x++先传递x的数值,然后再执行自加,所以这句输出的是b:6。
作者: 爆炸头    时间: 2015-5-2 10:15
a6b6c7c7~~~~~
作者: guoyangpeng    时间: 2015-5-2 10:38
a:6
b:6
c:7
d:7
作者: yuanhnu    时间: 2015-5-2 11:07
a:6
b:6
c:7
d:7
从上往下一直执行下去,因为没有遇到break,直至程序末尾结束
作者: zy18692243338    时间: 2015-5-2 14:03
6   6    7      7
作者: Wilsoncyf    时间: 2015-5-2 16:13
学习啦,嘿嘿
作者: lshaizj    时间: 2015-5-2 16:25
输出 6 6 7 7
作者: 横看成岭侧成锋    时间: 2015-5-2 16:30
好,学习了
作者: exist    时间: 2015-5-2 16:38
6 6 7 7  {:2_35:}
作者: Cat    时间: 2015-5-2 19:10
学习一下~




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