深入学习java源码之Math.max()与 Math.min()
生活随笔
收集整理的這篇文章主要介紹了
深入学习java源码之Math.max()与 Math.min()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
深入學習java源碼之Math.max()與 Math.min()
java基本數據類型及自動轉型
8種基本數據類型及其所占空間大小:
一、byte,占用一個字節,取值范圍為 -128-127,默認是“\u0000”,表示空 二、short,占用兩個字節,取值范圍為 -32768-32767 三、int,占用四個字節,-2147483648-2147483647 四、long,占用八個字節,對 long 型變量賦值時必須加上"L"或“l”,否則不認為是 long 型 五、float,占用四個字節,對 float 型進行賦值的時候必須加上“F”或“f”,如果不加,會產生編譯錯誤,因為系統 自動將其定義為 double 型變量。double轉換為float類型數據會損失精度。float a = 12.23產生編譯錯誤的,float a = 12是正確的 六、double,占用八個字節,對 double 型變量賦值的時候最好加上“D”或“d”,但加不加不是硬性規定 七、char,占用兩個字節,在定義字符型變量時,要用單引號括起來 八、boolean,只有兩個值“true”和“false”,默認值為false,不能用0或非0來代替,這點和C語言不同自動類型轉換
1)兩種類型是彼此兼容的
2)轉換的目的類型占得空間范圍一定要大于轉化的源類型
正向過程:由低字節向高字節自動轉換
byte->short->int->long->float->double
逆向過程:使用強制轉換,可能丟失精度。
//?自動類型轉換 short?s=1; int?i; //?自動類型轉換?short類型轉成int類型 i=s;整數類型(byte/short/int/long)中,對于未聲明數據類型的整形,其默認類型為int型。在浮點類型(float/double)中,對于未聲明數據類型的浮點型,默認為double型。
int a=(int)3.14;
?小數的默認數字類型是double, 例如3.12. 當float a = 3.12時會報錯, 因為3.12的默認數據類型是double, 我們需要使用如下的賦值方法:
float a = 3.12F float b = (float)3.12第一種方法在3.12后面加了一個F, 告訴編譯器這是一個float的數. 第二種方法對3.12進行了強制的類型轉換.?
double?d=1.333; float?f; //?把double類型的數據強制轉換成float類型 f=(float)d; int x; double y; x = (int)34.56 + (int)11.2; // 丟失精度 y = (double)x + (double)10 + 1; // 提高精度 System.out.println("x=" + x); System.out.println("y=" + y);x=45 y=56.0?
| static double | max(double a, double b) 返回兩個 double值中的較大值。 |
| static float | max(float a, float b) 返回兩個 float的較大值。 |
| static int | max(int a, int b) 返回兩個 int值中的較大值。 |
| static long | max(long a, long b) 返回兩個 long的較大值。 |
| static double | min(double a, double b) 返回兩個 double的較小值。 |
| static float | min(float a, float b) 返回兩個 float的較小值。 |
| static int | min(int a, int b) 返回兩個 int的較小值。 |
| static long | min(long a, long b) 返回兩個 long的較小值。 |
java源碼
public final class Math {private Math() {}public static int max(int a, int b) {return (a >= b) ? a : b;}public static long max(long a, long b) {return (a >= b) ? a : b;}//在有保證的非NaN參數上使用原始的逐位轉換。private static long negativeZeroFloatBits = Float.floatToRawIntBits(-0.0f);private static long negativeZeroDoubleBits = Double.doubleToRawLongBits(-0.0d);public static float max(float a, float b) {if (a != a)return a; // a is NaNif ((a == 0.0f) &&(b == 0.0f) &&(Float.floatToRawIntBits(a) == negativeZeroFloatBits)) {// Raw conversion ok since NaN can't map to -0.0.return b;}return (a >= b) ? a : b;}public static double max(double a, double b) {if (a != a)return a; // a is NaNif ((a == 0.0d) &&(b == 0.0d) &&(Double.doubleToRawLongBits(a) == negativeZeroDoubleBits)) {// Raw conversion ok since NaN can't map to -0.0.return b;}return (a >= b) ? a : b;}public static int min(int a, int b) {return (a <= b) ? a : b;}public static long min(long a, long b) {return (a <= b) ? a : b;}public static float min(float a, float b) {if (a != a)return a; // a is NaNif ((a == 0.0f) &&(b == 0.0f) &&(Float.floatToRawIntBits(b) == negativeZeroFloatBits)) {// Raw conversion ok since NaN can't map to -0.0.return b;}return (a <= b) ? a : b;}public static double min(double a, double b) {if (a != a)return a; // a is NaNif ((a == 0.0d) &&(b == 0.0d) &&(Double.doubleToRawLongBits(b) == negativeZeroDoubleBits)) {// Raw conversion ok since NaN can't map to -0.0.return b;}return (a <= b) ? a : b;} } public final class StrictMath {private StrictMath() {}public static int max(int a, int b) {return Math.max(a, b);}public static long max(long a, long b) {return Math.max(a, b);}public static float max(float a, float b) {return Math.max(a, b);} public static double max(double a, double b) {return Math.max(a, b);}public static int min(int a, int b) {return Math.min(a, b);}public static long min(long a, long b) {return Math.min(a, b);}public static float min(float a, float b) {return Math.min(a, b);}public static double min(double a, double b) {return Math.min(a, b);} }?
總結
以上是生活随笔為你收集整理的深入学习java源码之Math.max()与 Math.min()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML+CSS期末大作业 中国传统美食
- 下一篇: 5G SA与NSA