i++,++i和i--

对于i=i++ 赋值运算最后算,先算i++
将1压入操作数栈,将i压入局部变量表
将i自增,局部变量表中i=2
再将操作数栈中的1赋值给i
因此i曾经变为2但结果还是1

i++和++i在理论效率上是没有什么区别的,因为他们经过编译器优化后的字节码是一样的,
而在for循环的比较中i--的速度更快,这是因为对于寄存器的操作中,有几个标志位,i--时,减法会影响4个标志位,其中有一个是判断正负,比较时可以直接用这个来判断,而i++只会影响一个是否溢出标志位,每次循环都要多一条指令来判断是否大于阈值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java byte code 的学习意义 为啥要学java bytecode,这就跟你问我已经会python了为...
    shanggl阅读 1,705评论 0 3
  • 第6章类文件结构 6.1 概述 6.2 无关性基石 6.3 Class类文件的结构 java虚拟机不和包括java...
    kennethan阅读 967评论 0 2
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,055评论 0 13
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • 第二部分 自动内存管理机制 第二章 java内存异常与内存溢出异常 运行数据区域 程序计数器:当前线程所执行的字节...
    小明oh阅读 1,210评论 0 2