我正在重新问一个我认为很少受到关注的问题:
为什么这个简单的代码(只是调用Math.log()
):
Double thisdouble = Math.log(10);
在jdk1.7.0_11的Math.class的第275行设置断点:
274 public static double log(double a) {
275 return StrictMath.log(a); // default impl. delegates to StrictMath
276 }
调试模式下不停止执行?有人可以在他/她自己的机器上尝试一下吗(我正在使用 Eclipse)?
Calling Math.exp()
并调试Math.exp
(第 254 行)函数确实有效...
EDIT:上述问题的答案是Math.log
被 Hotspot VM 的内部调用所取代,因此永远不会到达 Math 类中的代码。现在剩下的问题是为什么Math.exp
没有被内在的取代... FWIW我使用的是Core i5 M520(Arrandale),但我严重怀疑该处理器是否支持日志而不是exp...
我假设 Math 类中的代码只是后备代码,由那些方法调用不被调用某些本机浮点运算代替的体系结构使用。因此,在您的情况下,该方法实际上并未被调用。不过,我必须承认我没有证据支持这个假设。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)