A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zsp1579 初级黑马   /  2018-7-28 21:04  /  833 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zsp1579 于 2018-7-28 21:13 编辑

我是一个刚学Java的新人,平时在使用for循环时,都是这样写的:for(int i=0; i<10; i++),用的 i++。然而今天意外看到了for循环的i++和++i的区别,发现for循环也是可以这样的:for(int i=0; i<10; ++i),用的 ++i。

看到的时候就在寻思在for循环中 i++ 和 ++i会不会有什么区别呢?

自己越想心里越没完没了,没心思往下看了,只好自己取查查资料,再用实例尝试了一下,发现它们在for循环里面效果是一模一样的!

首先我们应该都知道++i与i++的区别是: ++i 是先执行 i=i+1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i=i+1;

然后我们也知道for循环的执行顺序如下

  • 1  for(A;B;C)
  • 2    {
  • 3   D;
  • 4    }

1.进入循环执行A;//只是进入的时候执行.

2.执行B;//条件为真才执行D,不然就跳出for了.

3.执行D;

4.执行C;

5.再回到第2步开始执行


那么我们接着看下面实例:

1.for (int i=0; i<10; i++):

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

相当于:

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


2.for (int i=0; i<10; ++i):

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

相当于:

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


在上述的循环体中,i++ 和 ++i 的作用是一样的。

打印出来的信息都是:

0
1
2
3
4
5
6
7
8
9

打印信息也证明了 i++ 和 ++i 的作用是一样的。

然而到这步我们也只是知道了作用效果是一样,但是他们肯定是有一定区别的。

所以我去把循环耗时也打印了出来,

循环次数=100的时候  :

循环次数=1000的时候:

循环次数=10000的时候:

相信大家也看出来区别了,没错,就是运行时间有差别,当循环此时较少没多少出入,但是当我们循环的次数上去了那么这差距就有点明显了。然后仔细探考后发现:在Java中i++语句是需要一个临时变量取存储返回自增前的值,而++i不需要。这样就导致使用i++时系统需要先申请一段内存空间,然后将值赛如进去,最后不用了才去释放。多了这么一系列操作时间当然多了啊,最后建议大家以后在写for循环且不影响逻辑的情况下多使用++i,少使用i++,毕竟这也算一定程度的系统优化。

1 个回复

倒序浏览
一般使用i++吧,因为可以用ide快捷方式直接敲出来
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马