带有增量运算符的Java Switch语句

时间:2014-06-17 17:20:50

标签: java switch-statement increment

int k=0;

switch (k++) {
   case 0: System.out.println("0 is "+k);
}

输出:

  

0是1

为什么1?它仍然在切换操作符中,并且必须在退出后递增。

2 个答案:

答案 0 :(得分:3)

Postfix意味着它将在评估后递增,而不是在当前块之后递增。在这种情况下,它被评估,递增k,然后分支到评估。正是应该如此。

答案 1 :(得分:0)

switch语句的第一件事是处理表达式(k++)。返回的结果与案例值进行比较。但由于k++已经处理完毕,k的值为1。由于它是一个后缀运算符,返回的值是它递增之前的值。因此,返回0,但执行表达式后的值为1