Math類就屬於方法類知識,雖然在實際項目中不多用到,可是總會用到。java
那在Java中Math類是幹嗎的? Math類在java.lang包中,包含完成基本數學函數所需的方法。算法
Math類位於java.lang包中,包含用於執行基本數學運算的方法,Math類的全部方法都是靜態方法,因此使用該類中的方法時,能夠直接使用類名.方法名,如:Math.round()
;數組
編號 | 方法名稱 | 類型 | 描述 |
---|---|---|---|
1 | public static long round(double a) | 靜態方法 | 返回四捨五入的整數 |
2 | public static double floor(double a) | 靜態方法 | 返回小於參數的最大整數(地板數) |
3 | public static double ceil(double a) | 靜態方法 | 返回大於參數的最大整數(天花板數) |
4 | public static double random() | 靜態方法 | 返回[0,1)之間隨機的浮點數 |
package com.shxt.demo03;
public class Demo01 {
public static void main(String[] args) {
double num = 13.56; // 定義一個double類型的變量
int a = (int)num; //強制類型轉換,將double類型強制轉換爲int類型
System.out.println("強制類型轉化:"+a);
long b = Math.round(num); //調用round方法,進行四捨五入
System.out.println("四捨五入:"+b);
double c = Math.floor(num);//地板數
System.out.println("地板數:"+c);
double d = Math.ceil(num);//天花板數
System.out.println("天花板數:"+d);
double e = Math.random(); //返回[0,1)之間隨機的浮點數
System.out.println("隨機數字[0,1):"+e);
//返回0-99的整數
int f = (int)(Math.random()*99);
System.out.println("隨機整數[0,99):"+f);
}
}
/* 運行結果爲: 強制類型轉化:13 四捨五入:14 地板數:13.0 天花板數:14.0 隨機數字[0,1):9.71689600570258E-4 隨機整數[0,99):29 */
複製代碼
示例:定義一個包含10個元素的整型數組,經過隨機產生10之內的隨機數,給數組中的每一個元素賦值,並輸出結果dom
package com.shxt.demo03;
public class Demo02 {
public static void main(String[] args) {
int[] nums = new int[10];
for (int i = 0; i < 10; i++) {
nums[i]=(int)(Math.random()*10);
}
for (int num : nums){
System.out.print(num+",");
}
}
}
複製代碼
來源API的解釋,本身使用的時候方便查詢而已,推薦查看官方API函數
編號 | 方法名稱 | 類型 | 描述 |
---|---|---|---|
1 | public static double toDegrees(double angrad) | 靜態方法 | 將-π/2到π/2之間的弧度值轉化爲度 例如: Math.toDegrees(Math.PI/2)結果爲90.0; |
2 | public static double toRadians(double angdeg) | 靜態方法 | 將度轉化爲-π/2到π/2之間的弧度值 例如: Math.toRadians(30)結果爲 π/6; |
3 | public static double sin(double a) | 靜態方法 | 返回角的三角正弦 |
4 | public static double cos(double a) | 靜態方法 | 返回角的三角餘弦 |
5 | public static double tan(double a) | 靜態方法 | 返回角的三角正切 |
6 | public static double asin(double a) | 靜態方法 | 返回一個值的反正弦; 返回的角度範圍在 -pi/2 到 pi/2 之間 |
7 | public static double acos(double a) | 靜態方法 | 返回一個值的反餘弦;返回的角度範圍在 0.0 到 pi 之間 |
8 | public static double atan(double a) | 靜態方法 | 返回一個值的反正切;返回的角度範圍在 -pi/2 到 pi/2 之間 |
編號 | 方法名稱 | 類型 | 描述 |
---|---|---|---|
1 | public static double exp(double a) | 靜態方法 | 得到以e爲底a爲指數的數值 |
2 | public static double log(double a) | 靜態方法 | 對數函數 |
3 | public static double log10(double a) | 靜態方法 | 底數爲 10 的對數 |
4 | public static double pow(double a, double b) | 靜態方法 | a爲底b爲指數的值 |
5 | public static double sqrt(double a) | 靜態方法 | 正平方根 |
編號 | 方法名稱 | 類型 | 描述 |
---|---|---|---|
1 | public static double max(double a, double b) | 靜態方法 | 最大值 |
2 | public static float max(float a, float b) | 靜態方法 | 最大值 |
3 | public static int max(int a, int b) | 靜態方法 | 最大值 |
4 | public static long max(long a, long b) | 靜態方法 | 最大值 |
5 | public static double min(double a, double b) | 靜態方法 | 最小值 |
6 | public static float min(float a, float b) | 靜態方法 | 最小值 |
7 | public static int min(int a, int b) | 靜態方法 | 最小值 |
8 | public static long min(long a, long b) | 靜態方法 | 最小值 |
9 | public static double abs(double a) | 靜態方法 | 絕對值 |
關於數學計算的Math類,根據實際的須要,查閱API文檔纔是正道!spa
Random類中實現的隨機算法是僞隨機,也就是有規則的隨機。在進行隨機時,隨機算法的起源數字稱爲種子數(seed),在種子數的基礎上進行必定的變換,從而產生須要的隨機數字。相同種子數的Random對象,相同次數生成的隨機數字是徹底相同的。也就是說,兩個種子數相同的Random對象,第一次生成的隨機數字徹底相同,第二次生成的隨機數字也徹底相同,這點在生成多個隨機數字時須要特別注意。code
public Random() 複製代碼
該構造方法使用一個和當前系統時間對應的相對時間有關的數字做爲種子數,而後使用這個種子數構造Random對象對象
public Random(long seed) 複製代碼
該構造方法能夠經過制定一個種子數進行建立文檔
Random r = new Random();
Random r1 = new Random(100);
複製代碼
注意:種子數只是隨機算法的起源數字和生成的隨機數字的區間無關。數學
Random類中各方法生成的隨機數字都是均勻分佈的,也就是說區間內部的數字生成的概率是均等的。
編號 | 方法名稱 | 類型 | 描述 |
---|---|---|---|
1 | public boolean nextBoolean() | 普通方法 | 生成一個隨機的boolean值, 生成true和false的值概率相等, 也就是都是50%的概率 |
2 | public double nextDouble() | 普通方法 | 生成一個隨機的double值,數值介於[0,1.0)之間 |
3 | public int nextInt() | 普通方法 | 生成一個隨機的int值,該值介於int的區間, 也就是-231到231-1之間 |
4 | public int nextInt(int n) | 普通方法 | 生成一個隨機的int值,該值介於[0,n)的區間, 也就是0到n之間的隨機int值 |
5 | public void setSeed(long seed) | 普通方法 | 從新設置Random對象中的種子數 |
package com.shxt.demo04;
import java.util.Random;
public class Demo01 {
public static void main(String[] args) {
Random random = new Random();
double num1 = random.nextDouble();
System.out.println("生成[0,1.0)區間的小數:"+num1);
//生成[0,10.0)區間的小數:將該區間擴大10倍便是要求的區間
double num2 = random.nextDouble()*10;
System.out.println("生成[0,10.0)區間的小數:"+num2);
//生成[1,5.5)區間的小數:只須要首先生成[0,5.5)區間的隨機數字,而後將生成的隨機數區間加1便可
double num3 = random.nextDouble()*5.5+1;
System.out.println("生成[1,5.5)區間的小數:"+num3);
//生成任意整數:直接使用nextInt方法便可
int num4 = random.nextInt();
System.out.println("生成任意的整數:"+num4);
//生成[0,100)區間的整數
int num5 = random.nextInt(100);
System.out.println("生成[0,100)區間的整數:"+num5);
//生成[-100,100)區間的整數
int num6 = random.nextInt(200)-100;
System.out.println("生成[-100,100)區間的整數:"+num6);
}
}
複製代碼