建议七 警惕自增的陷阱

《编写高质量代码:改善Java程序的151个建议》之建议七。

学习

自增陷阱代码:

1
2
3
4
5
6
7
8
9
10
public class Client {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 10; i++) {
count = count++;
System.out.println(i + " : count=" + count);
}
}
}

输出:

1
2
3
4
5
6
7
8
9
10
0 : count=0
1 : count=0
2 : count=0
3 : count=0
4 : count=0
5 : count=0
6 : count=0
7 : count=0
8 : count=0
9 : count=0

分析

代码count = count++;运行期间详细处理步骤:

  1. JVM把count值(此时为0)拷贝到临时变量区;
  2. count值自增1,此时count值就是1;
  3. 将临时变量区的值赋值给count,此时count值又变成了0;

    评论

    自增的实现原理不同语言可能不同。。所以这种有点像考试题了!