Java 编译器会预先计算文字的总和吗?

2024-02-14

int i = 10 + 20;

编译器是否真的会处理这段代码,添加10 + 20,并且字节码与这行代码相同?

int i = 30;

我在哪里可以读到相关内容?


是的,您甚至可以亲自验证。以一个小的 Java 文件为例:

public class Main {
  public Main() {
    int i = 10 + 20;
  }
}

编译它javac Main.java,然后运行javap -c Main拆解它:

Compiled from "Main.java"
public class Main extends java.lang.Object{
public Main();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   bipush  30
   6:   istore_1
   7:   return

}

在字节码中可以清楚地看到编译器的优化:bipush 30!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 编译器会预先计算文字的总和吗? 的相关文章

随机推荐