Java/Android代码优化:Java是否在构建时删除无法访问的代码

Jas*_*ers 6 java optimization android

请看一下这段代码android示例:

private static final boolean aBoolean = false;

...

if(aBoolean){
   //do something like logs
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,由于aBoolean的值为false并且它不能在运行时更改,因此//在构建时是否会执行类似于logs语句的操作,或者它是否仍然是构建的,并且每次它将评估if?

我正在尝试找到像预处理器#DEFINE #IF ...这样的行为,这样当我编码时,我得到了我的日志,当我发布时,我切换一个值,我的所有调试代码都被完全忽略.

(我还想指出我的问题是面向Android的,所以如果Java和Android之间存在差异,请告诉我)

Fal*_*rri 3

检查变量的日志记录是完美的。即使代码没有得到优化,检查布尔条件也几乎是无操作,并且您的优化非常过早。

但为了回答你的问题,它可能会被优化掉。