为什么Java,Math中的不同类型的基本数学函数不会重载?

Snu*_*ill 1 java math overloading pow

我有一个非常有趣的问题.最近我发现,Math.pow()只接受(double,double)args,我想知道为什么没有其他类型组合的重载函数,如(int,int)或(int,double)atc ......

我认为这是一个很大的漏洞,并且很多弱点,所以我相信有一个原因.有人可以向我解释一下吗?

考虑这两种方法:

private int simplePow(int x) {
    return x * x;
}
private int harderPow(int x) {
    return (int) Math.pow(x, 2);
}
Run Code Online (Sandbox Code Playgroud)

第一个比第二个快得多...问题是,如果你知道,你使用幂(int,int),计算是非常有效的,你不需要处理双变量的问题.

ars*_*jii 7

真的,唯一应该关注的是(int, int)过载; 采取double参数的其他人应该导致doubles,所以(double, double)方法会这样做.那为什么没有(int, int)超负荷?可能是因为取幂增长得如此之快,并且因为ints只有32位长,所以有一些参数是有限的,这样一个参数可以在另一个范围内.double■找一个很大更大的范围,他们没有类似的问题(要清楚,双打可以溢出太多,但他们可容纳约1.8e308是最大值;比INT大得多).您当然可以实现自己的方法来获取整数幂,就像这里所做的那样(接受的答案通过平方来使用取,也可以应用于(double, int)案例).