Java math.min实际上是如何工作的?

Java math.min实际上是如何工作的?,java,math,min,built-in,Java,Math,Min,Built In,我知道java中的所有数学函数都是内置的。但出于好奇,我想知道Math.min()实际上是如何工作的 我查看了java文档,找不到任何帮助。我对java很陌生 只需检查: publicstaticintmin(inta,intb){ 返回(a math.min(a,b) = public static int min (a, b) { if(a<=b) return a; else return b; } math.min(a,b)=公共静态int min(a,b){ 如果(a

我知道java中的所有数学函数都是内置的。但出于好奇,我想知道
Math.min()
实际上是如何工作的

我查看了java文档,找不到任何帮助。我对java很陌生

只需检查:

publicstaticintmin(inta,intb){
返回(a

math.min(a,b) = public static int min (a, b) {
  if(a<=b) return a;
  else return b;
}
math.min(a,b)=公共静态int min(a,b){
如果(a

java.lang.Math.min(inta,intb)返回两个int值中的较小值。也就是说,结果是接近负无穷大的值。如果参数具有相同的值,则结果是相同的值。如果任一值为NaN,则结果为NaN。与数值比较运算符不同,此方法认为负零严格小于正零。如果一个参数为正零,另一个参数为负零,则结果为负零

比如说

System.out.println(Math.min(1111, 1000));
输出为

1000
它显示
Math.min()中的最小值
publicstaticintmin(inta,intb){
返回(a

返回两个int值中的较小值。也就是说,参数的结果更接近Integer.MIN_value的值。如果参数具有相同的值,则结果是相同的值

行为

Math.min(1, 2) => 1
Math.min(1F, 2) => 1F
Math.min(3D, 2F) => 2D
Math.min(-0F, 0F) => -0F
Math.min(0D, -0D) => -0D
Math.min(Float.NaN, -2) => Float.NaN
Math.min(-2F, Double.NaN) => Double.NaN
public static int min(int a, int b) {
    return (a <= b) ? a : b;
}
public static int min(int, int);
Code:
   0: iload_0           // loads a onto the stack
   1: iload_1           // loads b onto the stack
   2: if_icmpgt     9   // pops two ints (a, b) from the stack
                        // and compares them
                        // if b>a, the jvm continues at label 9
                        // else, at the next instruction, 5
                        // icmpgt is for integer-compare-greater-than
   5: iload_0           // loads a onto the stack
   6: goto          10  // jumps to label 10
   9: iload_1           // loads 
  10: ireturn           // returns the currently loaded integer
java.lang.Math和java.lang.StrictMath源代码

Math.min(1, 2) => 1
Math.min(1F, 2) => 1F
Math.min(3D, 2F) => 2D
Math.min(-0F, 0F) => -0F
Math.min(0D, -0D) => -0D
Math.min(Float.NaN, -2) => Float.NaN
Math.min(-2F, Double.NaN) => Double.NaN
public static int min(int a, int b) {
    return (a <= b) ? a : b;
}
public static int min(int, int);
Code:
   0: iload_0           // loads a onto the stack
   1: iload_1           // loads b onto the stack
   2: if_icmpgt     9   // pops two ints (a, b) from the stack
                        // and compares them
                        // if b>a, the jvm continues at label 9
                        // else, at the next instruction, 5
                        // icmpgt is for integer-compare-greater-than
   5: iload_0           // loads a onto the stack
   6: goto          10  // jumps to label 10
   9: iload_1           // loads 
  10: ireturn           // returns the currently loaded integer
如果5处的比较为真,a将被加载,jvm将跳转到10并返回a, 如果比较结果为false,它将跳转到9,加载并返回b

内在的

Math.min(1, 2) => 1
Math.min(1F, 2) => 1F
Math.min(3D, 2F) => 2D
Math.min(-0F, 0F) => -0F
Math.min(0D, -0D) => -0D
Math.min(Float.NaN, -2) => Float.NaN
Math.min(-2F, Double.NaN) => Double.NaN
public static int min(int a, int b) {
    return (a <= b) ? a : b;
}
public static int min(int, int);
Code:
   0: iload_0           // loads a onto the stack
   1: iload_1           // loads b onto the stack
   2: if_icmpgt     9   // pops two ints (a, b) from the stack
                        // and compares them
                        // if b>a, the jvm continues at label 9
                        // else, at the next instruction, 5
                        // icmpgt is for integer-compare-greater-than
   5: iload_0           // loads a onto the stack
   6: goto          10  // jumps to label 10
   9: iload_1           // loads 
  10: ireturn           // returns the currently loaded integer
在Java 8 Hotspot JVM中,有一个实例提示它使用优化的机器代码进一步优化了Math.min:

do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S)
这意味着上面的字节码不会被Java8HotSpot JVM执行。但是,不同的JVM执行的字节码不同,这就是为什么我也解释了字节码


希望您现在了解了关于Math.min!的所有内容:)

使用源代码(Math.java):
publicstaticintmin(inta,intb){return(a如果你手头没有IDE,可能会有很大帮助。阅读源代码,在许多情况下它只是一行。它的工作原理还没有定义。有几种可能的编写方法,但它们都必须产生相同的结果,正如Javadoc中所规定的那样。不清楚你真正想要的是什么。非常感谢你找到那篇文档爱奥尼。它真的帮助我更多地理解它。谢谢你,X.L.蚂蚁有它的确切形式,但你的蚂蚁仍然帮助我更全面地理解它。@SamuelLJackson很高兴我能帮上忙,伙计!谢谢你!非常感谢。