我们都知道
int i=0;
j=i++;
的结果:j为0,i为1。但是i=i++;结果又会怎样呢?看下面的代码
- int i=0;
- for(int j=0;j<5;j++){
- i=i++;
- System.out.print(i+" ");
- }
- System.out.println();
- i=0;
- for(int j=0;j<5;j++){
- i++;
- System.out.print(i+" ");
- }
- System.out.println();
- i=0;
- for(int j=0;j<5;j++){
- i=++i;
- System.out.print(i+" ");
- }
运行结果如下:
- 0 0 0 0 0
- 1 2 3 4 5
- 1 2 3 4 5
可以看到,在java中,i=i++;还是有的出乎我们的意料。
java编译器遇到i++和i--后,会重新分配一块内存,用于存放当前i的值,然后在做自加和自减,如果有赋值的话,再将自加前的i值赋给另一个变量。过程如图:
需要说明,这只是java程序中的结果,其他程序并不一定的这样,像c语言中
int i=0;
i=i++;
结果就是i为1。
还有一个问题也要注意:在for循环条件中的i++和++i是等价的
- for(int i = 0; i < 10; i++){
- System.out.print(i+" ");
- }
- System.out.println();
- for(int j=0;j<10;++j){
- System.out.print(j+" ");
- }
- System.out.println();
结果如下:
- 0 1 2 3 4 5 6 7 8 9
- 0 1 2 3 4 5 6 7 8 9
阅读(2287) | 评论(0) | 转发(0) |