日期:2014-05-20  浏览次数:21239 次

switch(i++) {} 问题
请各位给小弟解答一下:
public class Test{
public static void main(String[] args) {

int i = 2;
switch(i++) {
case 2 : i += 1;
case 3 : i += 1;
case 4 : i += 1;break;
default : i += 1;
}

System.out.println(i);

}
}
switch

------解决方案--------------------
i=2,(i++) = 2
------解决方案--------------------
这里楼主应该会被i++搞迷惑了,到底 case(i++) 时 为多少?2还是3呢? 
i++ 其隐式含义是 i=i+1;它和直接指定 i=i+1;是有区别的:
i++,这个时候的i的值,并不会立即增加,要执行完这句后才增加,这个叫编译后置,
i=i+1,这个时候的i的值,是增加完后的值.

还有一个相对应的 ++i; 它是在一进入到这里,立马就增加了,它是编译前置的.