2022-10-28-java里面for循环中i++与++i的区别

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

我们看下面实例:

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

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

相当于:

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

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

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

1
2
3
4
相当于:

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

1
2
3
4
5

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

打印出来的信息都是:

0
1
2
3
4
5
6
7
8
9

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

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

所以我去把循环耗时也打印了出来,
循环次数=100的时候:,

i++时间:5ms
++i时间:3ms

循环次数=1000的时候:,

i++时间:25ms
++i时间:21ms

循环次数=10000的时候:,

i++时间:179ms
++i时间:130ms

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

参考文献:

java字节码角度图解 i++ 和 ++i

posted @ 2023-06-29 17:41  苏春雨1024  阅读(176)  评论(0)    收藏  举报