Math.min() 和 if 条件的区别

Shi*_*rty 1 java

获得最小数量的最佳方式是什么,哪种方式提高了性能,或者两者都与性能相同?

获得两个数字之间最小距离的一种方法:

double minDistance = Double.MAX_VALUE;
double distance = coordinate1.distnaceTo(coordinate2);

if(distnace  < minDistance ) {
  minDistance = distance;
}
Run Code Online (Sandbox Code Playgroud)

获得两个数字之间最小距离的另一种方法:

double minDistance = Double.MAX_VALUE;
double minDistance = Math.min(coordinate1.distnaceTo(coordinate2), minDistance);
Run Code Online (Sandbox Code Playgroud)

vik*_*eve 5

如果您正在处理正数,不等于NaN,-0.00.0,那么应该没有太大区别。

以下来自Math.minJava 8 中的源代码突出显示了以下差异:

如果任一值为 NaN,则结果为 NaN。与数值比较运算符不同,此方法认为负零严格小于正零。如果一个参数为正零,另一个为负零,则结果为负零。

因此,由于它检查和vs ,效率Math.min可能会稍低一些,但可以说它更具可读性 - 您需要首先考虑特殊情况是否适用,然后再考虑可读性与(如此微小的)性能差异之后。NaN-0.00.0

我个人会使用Math.min,但这是我自己的意见。