读书人

Java圈套解惑

发布时间: 2013-07-08 14:13:00 作者: rapoo

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相同的处理方式。

?

?

读书人网 >编程

热点推荐