为什么前者效率更高,底层到底做了些什么?大家来讨论下。

解决方案 »

  1.   

    如果i是个表达式,那么第一个式子只需要将i计算一遍,而第二个式子要将i计算两遍。假如表达式不复杂体现不出来,但是如果表达式复杂就提现出来了。
      

  2.   

    根据本人的看法,i+=j;应当是先对i进行访问,然后再给它自加,最后赋值给j.
      至于i=i+j;应当是前面i自加的值再加上j的值就好了
      

  3.   

    在Java里讨论没有意义,经过编译器优化后两者在JVM中执行的指令一样。
      

  4.   

    无意中路过,也说说我的看法吧.答案是  i+= j 这种写法效率高.对效率的看法: 提高的代码的效率很重要。有句话是这么说的:点滴能改变一切.我们可以想想,我们一个地方
    不注意,一个地方不注意,那么整体效率就会很低了。解释:为什么 i+=j 的效率高.首先咱们先看看 i+=j的情况.首先在 栈空间中获取 变量 j ,然后在 获取变量 i , 遇到 +=运算 ,那么计算机就会把i的值加上j的值在放入地址映射表中。而 i = i+j ,需要取得 变量i ,取得变量 j,然后在进行+运算,然后在变量i ,在i+j的值放到地址映射表对应i的位置.所以一比较, i+=j的效率会比较高.
      

  5.   

    如果不是做系统底层开发,不必要关注这个,如果做系统底层开发,我觉得 Java 不适合。
      

  6.   

    先从变量和运算符分开思考
    变量有2个 i j;
    i+=j;里面出现2个变量,2个符号;
    i=i+j;里面出现3个变量和2个符号;
    如果你很的要去比较它们之间微妙差距那就看他们初始化变量的时间吧!
    2种 经过编译器优化后两者在JVM中执行的指令一样。