用内部调用替换java.lang.Math.log,为什么不用java.lang.Math.exp()?

我正在重新提出一个我认为太少关注的问题:

为什么这个简单的代码(只是调用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)吗?

调用Math.exp()并调试Math.exp (第254行)函数确实有效…

编辑:上面的答案是, Math.log被Hotspot VM的内部调用所取代,因此从未达到Math类中的代码。 现在仍然存在的问题是为什么Math.exp没有被内在的……取代.FWIW我在Core i5 M520(Arrandale)上,但我会严重怀疑该处理器是否支持日志而不是exp。 。

我假设Math类中的代码只是一个回退代码,由那些方法调用未被调用某些本机浮点操作代替的架构使用。 因此,在您的情况下,该方法实际上不会被调用。 但我必须承认,我没有证据支持这一假设。