Java预处理器
问题内容:
如果我有一个布尔字段,如:
private static final boolean DEBUG = false;
在我的代码中,我有如下语句:
if(DEBUG) System.err.println("err1");
Java预处理程序只是摆脱了if语句和无法访问的代码?
问题答案:
大多数编译器都会删除该语句。例如:
public class Test {
private static final boolean DEBUG = false;
public static void main(String... args) {
if (DEBUG) {
System.out.println("Here I am");
}
}
}
编译完此类后,我将通过javap
命令打印产生的指令清单:
javap -c测试
从“ Test.java”编译
公共类Test扩展了java.lang.Object {
公共Test();
码:
0:加载_0
1:调用特殊#1; //方法java / lang / Object。“” :()V
4:返回
公共静态void main(java.lang.String []);
码:
0:返回
}
如您所见,不System.out.println
!:)