【java】Maths類、Random類、System類、BigInteger類、BigDecimal類、Date類、SimpleDateFormat類

love_Aym發表於2018-04-08

一、Maths類

1、概述

java.lang

Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函式。

2、成員變數

PI:3.145926

3、成員方法

    * public static int abs(int a):取絕對值

    * public static double ceil(double a):ceil天花板,獲取向上取整,但結果是double值

    * public static double floor(double a):floor地板,獲取向下取整,但結果是double值

    * public staticint max(int a,int b):獲取兩個值中的最大值

    * public staticint min(int a,int b):獲取兩個值中的最小值

    * public static double pow(double a,double b):求a^b,指數運算

    * public static double random():生成0.0-1.0之間的隨機小數,包括0.0,不包括1.0

    * public static int round(float a):四捨五入,得到的是一個整數,引數為double的也可以

    * public static double sqrt(double a):取根號開平方,返回小數

注意:以上所有成員方法都是靜態的,構造方法會被私有(不讓其他類來建立該類物件)


二、Random類

1、java.util,父類為Object類,導包

2、功能

    *  此類用於產生隨機數如果用相同的種子建立兩個 Random 例項,

    *  則對每個例項進行相同的方法呼叫序列,它們將生成並返回相同的數字序列。

3、構造方法

    * public Random():建立一個新的隨機數生成器,引數傳遞的是納秒值(種子數),每次(每納秒)執行都會得到不同的值

    * public Random(long seed):使用單個long種子建立一個新的隨機數生成器,種子不同生成的隨機數是不同的(不用管內部機制比較複雜對開發沒什麼幫助)

4、成員方法

    * public int nextInt():返回任意int型隨機數

    * public int nextInt(int n)(重點掌握):返回[0,n)(左閉右開)區間內的Int值。

import java.util.Random;
public class Demo2_Random {
	public static void main(String[] args) {
		Random r = new Random();
		/*int x = r.nextInt();
		
		System.out.println(x);*/
		
		for(int i = 0; i < 10; i++) {
			//System.out.println(r.nextInt());
			System.out.println(r.nextInt(100));			//要求掌握,生成在0到n範圍內的隨機數,包含0不包含n
		}
				
		int a = r2.nextInt();
		int b = r2.nextInt();
		
		System.out.println(a);
		System.out.println(b);*/
	}

}

三、System類:System類代表系統,系統級的很多屬性和控制方法都放置在該類的內部。

1、java.lang,父類為Object,final類(不能有子類)

2、不能被例項化(構造方法被私有,成員方法均為靜態的直接類名呼叫即可)

3、在System類提供的設施中,有標準輸入、標準輸出和錯誤輸出流

4、成員方法

  • in:標準輸入流(鍵盤輸入)
  • out:標準輸出流(顯示器)
  • err:標準錯誤輸出流(顯示器)。

 例如: System.out.println(“Test”);

    該行程式碼的作用是將字串”Test”輸出到系統的標準輸出裝置上,也就是顯示在螢幕上。

    後續在學習完IO相關的知識以後,可以使用System類中的成員方法改變標準輸入流等對應的裝置,例如可以將標準輸出流輸出的資訊輸出到檔案內部,從而形成日誌檔案等。

5、成員方法

1)public static void gc():執行垃圾回收器,手動清掃

注意:在一個原始檔中不允許出現兩個public類,會搶佔公共資源,一般建議擁有主方法的類為public

2)public static void exit(int status):終止當前正在執行的java虛擬機器

根據慣例,非0狀態是異常終止(扣電池),0是正常終止

3)public static long currentTimeMills():返回以毫秒為單位的當前時間,計算程式執行時間

返回:當前時間與謝天世界時1970年1月1日午夜之間的時間差

4)pubiic static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length) :陣列拷貝

src--被拷貝的陣列,dest--拷貝到哪

從制定源陣列中複製一個陣列,複製從指定的位置開始,到目標陣列的指定位置結束

System.arraycopy(src, 0,dest, 0, src.length) 

public class Demo3_System {
	public static void main(String[] args) {
		//demo1();
		//demo2();
		//demo3();
		
		int[] src = {11,22,33,44,55};
		int[] dest = new int[8];
		for (int i = 0; i < dest.length; i++) {
			System.out.println(dest[i]);
		}
		
		System.out.println("--------------------------");
		System.arraycopy(src, 0, dest, 0, src.length);		//將陣列內容拷貝
		
		for (int i = 0; i < dest.length; i++) {
			System.out.println(dest[i]);
		}
	}

	public static void demo3() {
		long start = System.currentTimeMillis();		//1秒等於1000毫秒
		for(int i = 0; i < 1000; i++) {
			System.out.println("*");
		}
		long end = System.currentTimeMillis();			//獲取當前時間的毫秒值
		
		System.out.println(end - start);
	}

	public static void demo2() {
		System.exit(1);							//非0狀態是異常終止,退出jvm
		System.out.println("11111111111");
	}

	public static void demo1() {
		for(int i = 0; i < 100; i++) {
			new Demo();
			System.gc();						//執行垃圾回收器,相當於呼喊保潔阿姨
		}
	}

}

class Demo {									//在一個原始檔中不允許定義兩個用public修飾的類

	@Override
	public void finalize() {
		System.out.println("垃圾被清掃了");
	}							
	
}

四、BigInteger類

1、可以讓超過Integer範圍內的資料進行運算

2、構造方法

    * publicBigInteger(String val)

3、成員方法

    * public BigInteger add(BigInteger val)

    * public BigInteger subtract(BigInteger val)

    * public BigInteger multiply(BigInteger val)

    * public BigInteger divide(BigInteger val)

    * public BigInteger[]  divideAndRemainder(BigInteger val)。放商和玉樹


五、BigDecimal類

1、由於在運算的時候,float型別和double很容易丟失精度,演示案例。 所以,為了能精確的表示、計算浮點數,Java提供了BigDecimal

2、不可變的、任意精度的有符號十進位制數。

3、構造方法

    * publicBigDecimal(String val):計算小數的加減乘除,通過構造中傳入字串的方式,可以很精確得到結果,開發時推薦

4、成員方法

    * publicBigDecimal add(BigDecimal augend)

    * publicBigDecimal subtract(BigDecimal subtrahend)

    * publicBigDecimal multiply(BigDecimal multiplicand)

    * publicBigDecimal divide(BigDecimal divisor)

import java.util.Date;
public class Demo6_Date {

	public static void main(String[] args) {
		//demo1();
		//demo2();
		Date d1 = new Date();	
		d1.setTime(1000);	//設定毫秒值,改變時間物件
		System.out.println(d1);
	}

	public static void demo2() {
		Date d1 = new Date();	
		System.out.println(d1.getTime());  //通過時間物件獲取毫秒值
		System.out.println(System.currentTimeMillis());	//通過系統類的方法獲取當前時間毫秒值
	}

	public static void demo1() {
		Date d1 = new Date();	//如果沒有傳引數代表的是當前時間
		System.out.println(d1);
		
		Date d2 = new Date(0);	//如果構造方法中引數傳為0代表的是1970年1月1日
		System.out.println(d2);	//通過毫秒值建立時間物件
	}

}

六、Date類:util包下的,不能匯入aql包下的

1、類Date 表示特定的瞬間,精確到毫秒。

2、構造方法

    * publicDate():當前時間

    * publicDate(long date):1970年1月1日,通過毫秒值建立時間物件

3、成員方法

    * public longgetTime():返回1970.1.10點以來此data物件表示的毫秒數,通過時間物件獲取毫秒值

       Ststem.currentTimeMillis():通過系統類的方法獲取當前時間毫秒值

    * public voidsetTime(long time):設定毫秒值,改變時間物件


七、SimpleDateFormat類:實現日期和字串的相互轉換

1、DateFormat類的概述

    * DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。是抽象類,所以使用其子類SimpleDateFormat

2、SimpleDateFormat構造方法

    * publicSimpleDateFormat()

    * publicSimpleDateFormat(String pattern):建立時間的指定格式

3、成員方法

    * publicfinal String format(Date date):將日期物件轉換為字串

    * public Dateparse(String source):將時間字串轉換為日期物件

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo7_SimpleDateFormat {
	public static void main(String[] args) throws ParseException {
		//demo1();
		//demo2();
		//demo3();
		
		//將時間字串轉換成日期物件
		String str = "2000年08月08日 08:08:08";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		Date d = sdf.parse(str);						//將時間字串轉換成日期物件
		System.out.println(d);
	}

	public static void demo3() {
		Date d = new Date();							//獲取當前時間物件
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//建立日期格式化類物件
		System.out.println(sdf.format(d));				//將日期物件轉換為字串
	}

	public static void demo2() {
		Date d = new Date();							//獲取當前時間物件
		SimpleDateFormat sdf = new SimpleDateFormat();	//建立日期格式化類物件
		System.out.println(sdf.format(d));	 			//88-6-6 下午9:31
	}

	public static void demo1() {
		//DateFormat df = new DateFormat();				//DateFormat是抽象類,不允許例項化
		//DateFormat df1 = new SimpleDateFormat();
		DateFormat df1 = DateFormat.getDateInstance();	//相當於父類引用指向子類物件,右邊的方法返回一個子類物件
	}
}



相關文章