JAVA在编译过程会对代码进行优化,如果某一行代码永远不可能被执行到,
这行代码不会被编译到字节码文件中去。
如下面的例子,flag是一个可以在编译阶段就可以确定的值,
javac编译的时候不会把System.out.println编译到字节码文件中。
public class T {
public final static boolean flag = false;
public void test(){
if(flag){
System.out.println("print this line");
}
}
}
javap verbose可以看到 test 方法中没有和System.out.println相对应的指令。
public void test();
Code:
Stack=0, Locals=1, Args_size=1
0: return
LineNumberTable:
line 10: 0