Java编译器会预先计算文字总和吗?
-
29-09-2019 - |
题
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
!
其他提示
不隶属于 StackOverflow