Java陷阱解惑
* 不断完善中
?
1、自增陷阱
陷阱:
自增有两种形式:i++和++i,前者是先赋值后加1,后者则相反。那么下述程序的运行结果count等于几?
@Testpublic void test自增陷阱() {int expected = 10;int count = 0;for (int i = 0; i < expected; i++) {count = count++;}System.out.println(count);Assert.assertTrue(expected != count);}结果count=0,不等于预期的10。
?
解惑:
count++是一个表达式,是有返回值的,它的返回值就是count自加前的值,Java对自加是这样处理的:首先把count的值拷贝到一个临时变量区,然后对count变量加1,最后返回临时变量区的值。
该问题在不同的语言环境有不同的实现,如在C++中"count=count++"与"count++"是等效的,而在PHP中则保持着与Java相同的处理方式。
?
?