我有以下代码
float square(float val) { return val*val;}
boolean isInCircle(final float x,final float y) {
float squareDistance = square(cx - x) + square(cy - y);
return squareDistance < square(RADIUS);
}
RADIUS
是一个static
final
float
。
Java 编译器会优化调用 square(RADIUS)
吗?
当它转换为 android
的 dalvik
代码时会发生什么?它会保持优化吗?
最佳答案
Java 编译器不会对该代码执行任何操作。
HotSpot JVM 几乎肯定会预先计算平方 (RADIUS)。
Android 没有那个特定的 JVM。
我个人根本不会写 square() 方法,只是 return (cx-x)*(cx-x)+(cy-y)*(cy-y) < RADIUS*RADIUS;
并让编译器/JVM 从那里开始战斗。但后来我是一名数学家 ;-)
关于java - Java 编译器会优化对最终静态变量的方法调用吗?当它变成 dalvik 代码时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445996/