0

我刚开始分析一个执行一些插值的应用程序,并且在相互调用和相互log linear调用时发现了一些奇怪的东西。该行为可以通过以下方式重现:Math.logMath.exp

public class TestLogExp {
public static void main(String[] args) {
    Double thisdouble = 0d;
    thisdouble = Math.log(Math.exp(10));
    System.out.println(thisdouble);
    }
}

现在我们清楚地看到了,Math.log并且Math.exp在这个 main 方法中被调用。但是,当我在Math.expand中都设置断点时Math.log(它们只是对 的调用StrictMath native statics),执行只会在 中中断Math.exp,而不是在Math.log.

现在我认为它可能java不会在静态方法的调用中调试调用,但是当我调用时Math.exp(Math.log(10))(反之亦然),观察到相同的行为,只在 exp 中停止,而不是在日志中......

有谁能重现这个?为什么会这样?

编辑:似乎根本没有调试 Math.log 函数。将行替换为thisdouble = Math.log(Math.exp(10));,thisdouble = Math.log(10);仍然不会在调试模式下停止,尽管 Math.class 中有一个断点...

4

1 回答 1

0

如果您以这种方式尝试,它确实会进入这两种方法:

    Double thisdouble = 0d;
    double temp = Math.exp(10);
    thisdouble = Math.log(temp);
    System.out.println(thisdouble);

我正在使用 Netbeans v7.3

于 2013-02-22T08:36:01.090 回答