JAVA技巧(Java没有#ifdef的条件编译)
所谓条件编译,就是程序的一部分是否编译,取决于某个条件是否成立。一种常见的方法是排除调试输出语句。一旦程序正常运行,开发者就会删除这些语句,使程序更加简洁或高效。java虽然缺少显式条件编译,但是有隐式条件编译。
所有的java编译器都必须进行进程分析,考试提示:要保证:变量必须赋值后才能被引用;所有有返回值的函数都必须提供返回值,等等。如果编译器发现一个带有false值的语句,编译器将不会为该条件覆盖的代码段生成字节码。所以根据java编译器的优化和final布尔常量的机制,java也可以提供条件编译。
在C中,有一个关键字_inline,告诉编译器不需要调用这个函数(或者方法)。C编译器生成机器码时,调用_inline函数会直接被实际的方法实现代替,而不是将参数推入堆栈、获取控制、获取参数、返回值等一系列调用函数。在java中,final方法相当于C的inline函数,这也是编译器优化的一种策略。
0条评论