java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java i++ 和 ++i的区别

一文带你搞懂Java中i++ 和 ++i的区别

作者:程序员济癫

在Java中,i++和++i都用于递增变量i的值,但它们之间有一个细微的区别,i++是后缀递增操作符,++i是前缀递增操作符,在大多数情况下,这两种递增操作的结果都是一样的,但在某些特定的表达式和逻辑中,它们可能会产生不同的效果,本文将带大家搞清Java中i++ 和 ++i的区别

正文

1、i++ 和 ++i 有什么区别

首先,先看两个小例子:

到这里先停一下,大家自己思考半分钟,觉得打印结果是什么。

然后,我们来看看结果。

没错,第一个打印是 6 和 5,第二个打印是 6 和 6。

这就是他们的区别,解释下原因:

i++:这是后缀递增运算符,先将当前值赋给变量,然后再递增。

++i:这是前缀递增运算符,先递增变量的值,然后再赋给变量。

2、i++ 和 ++i 谁的效率高

这个问题我其实蒙对了,我说是一样高的,但是主管问我原因,我没答上来。

后来告诉我了答案,就是它们被编译器和JVM优化后的字节码是相同的,所以效率一样高。

3、字节码指令

然后我就去找了字节码指令的用法,将上面的案例以及两者效率是否一样进行了验证。

指令用法很简单,定位到class文件所在目录,使用 javap -verbose 命令执行即可。

1)、从字节码看区别

我们将前面那个案例,通过字节码指令输出到txt文件中。

在文档编辑器中找到main方法,对这两个字节码内容进行比对,发现确实有如下不同。

可以看到红框部分,刚好佐证了上面解释的区别,i++会先使用当前值,然后再递增;而++i会在递增之后立即使用新值,通过字节码看起来还是挺明显的。

2)、从字节码看谁的效率高

我们依然写个for循环的小例子来做验证。

将这两个类编译后的class通过字节码指令输出到txt中

接下来我们就可以比对下结果了

可以看到,main方法开始,从上到下的字节码是完全一样的,没任何不同。

所以,i++ 和 ++i 的效率本质是一样高的。

总结

以上就是一文带你搞懂Java中i++ 和 ++i的区别的详细内容,更多关于Java i++ 和 ++i的区别的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文