程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了x = x + 1和x ++在实现上的差异大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决x = x + 1和x ++在实现上的差异?

开发过程中遇到x = x + 1和x ++在实现上的差异的问题如何解决?下面主要结合日常开发的经验,给出你关于x = x + 1和x ++在实现上的差异的解决方法建议,希望对你解决x = x + 1和x ++在实现上的差异有所启发或帮助;

我想你的教授也许是故意 x-after x = x + 1x++will 的价值是相同的。只是重新措辞,因为它似乎在解释问题时造成了混乱。

好的,尽管的值x将相同,但是它们是不同的运算符,并且在字节码中使用不同的JVM指令。x + 1使用iadd指令,而x++使用iinc指令。尽管这取决于编译器。编译器可以自由地对特定操作使用不同的指令集。我已经针对javac编译器进行了检查。

对于 eclipse 编译器,来自@Holger的以下注释之一:

您可以使用javap命令检查字节码。让我们虑以下类:

class Demo {
    public static voID main(String[] args) {
        int x = 5;

        x = x + 1;
        System.out.println(X);

        x++;
        System.out.println(X);
    }
}

编译上面的源文件,并运行以下命令:

javap -c Demo

该代码将被编译为以下字节码(仅显示该@H_155_4@main方法):

 public static voID main(java.lang.String[]);
   Code:
      0: iconst_5
      1: istore_1
      2: iload_1
      3: iconst_1
      4: iadd
      5: istore_1
      6: getstatic     #2                  // FIEld java/lang/System.out:Ljava/io/PrintStream;
      9: iload_1
     10: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
     13: iinc          1, 1
     16: getstatic     #2                  // FIEld java/lang/System.out:Ljava/io/PrintStream;
     19: iload_1
     20: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
     23: return

解决方法

我的教授最近说,尽管x = x + 1并且x++显然会给出相同的结果,但是在JVM中实现它们的方式有所不同。这是什么意思?编译器是否不像:嘿,我明白了,x++所以我将其切换到x = x + 1并继续吗?

我怀疑在效率方面是否存在差异,但是如果在这些情况下组装会有所不同,我将感到惊讶&Hellip;

大佬总结

以上是大佬教程为你收集整理的x = x + 1和x ++在实现上的差异全部内容,希望文章能够帮你解决x = x + 1和x ++在实现上的差异所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。