Chinaunix首页 | 论坛 | 博客
  • 博客访问: 600491
  • 博文数量: 96
  • 博客积分: 1464
  • 博客等级: 上尉
  • 技术积分: 1539
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-12 23:24
文章分类

全部博文(96)

文章存档

2013年(29)

2012年(53)

2011年(14)

分类: Java

2012-09-05 11:29:59

我们都知道 
int i=0;
j=i++;
的结果:j为0,i为1。但是i=i++;结果又会怎样呢?看下面的代码

点击(此处)折叠或打开

  1. int i=0;
  2. for(int j=0;j<5;j++){
  3.    i=i++;
  4.    System.out.print(i+" ");
  5. }
  6. System.out.println();

  7. i=0;
  8. for(int j=0;j<5;j++){
  9.     i++;
  10.     System.out.print(i+" ");
  11. }
  12. System.out.println();

  13. i=0;
  14. for(int j=0;j<5;j++){
  15.     i=++i;
  16.     System.out.print(i+" ");
  17. }
运行结果如下:

点击(此处)折叠或打开

  1. 0 0 0 0 0
  2. 1 2 3 4 5
  3. 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是等价的

点击(此处)折叠或打开

  1. for(int i = 0; i < 10; i++){
  2.    System.out.print(i+" ");
  3. }
  4. System.out.println();

  5. for(int j=0;j<10;++j){
  6.    System.out.print(j+" ");
  7. }
  8. System.out.println();
结果如下:

点击(此处)折叠或打开

  1. 0 1 2 3 4 5 6 7 8 9
  2. 0 1 2 3 4 5 6 7 8 9




阅读(2242) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~