1. 程式人生 > >java day14 常用類BigInteger類,BigDecimal類,Date類,DateFormat類,Calendar類

java day14 常用類BigInteger類,BigDecimal類,Date類,DateFormat類,Calendar類

BigInteger類

package com.heima.otherclass;

import java.math.BigInteger;

public class Demo4_BigInteger {

	/**
	 ** A:BigInteger的概述
			* 可以讓超過Integer範圍內的資料進行運算
		* B:構造方法
			* public BigInteger(String val)
		* C:成員方法
			* 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)
	 */
	public static void main(String[] args) {
		//long num = 123456789098765432123L;
		//String s = "123456789098765432123";
		
		BigInteger bi1 = new BigInteger("100");
		BigInteger bi2 = new BigInteger("2");
		
		System.out.println(bi1.add(bi2)); 				//+
		System.out.println(bi1.subtract(bi2));			//-
		System.out.println(bi1.multiply(bi2)); 			//*
		System.out.println(bi1.divide(bi2));    		///(除)
		
		BigInteger[] arr = bi1.divideAndRemainder(bi2);	//取除數和餘數
		
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}

}

BigDecimal類

package com.heima.otherclass;

import java.math.BigDecimal;

public class Demo5_BigDecimal {

	/**
	 * * A:BigDecimal的概述
			* 由於在運算的時候,float型別和double很容易丟失精度,演示案例。
			* 所以,為了能精確的表示、計算浮點數,Java提供了BigDecimal
		
			* 不可變的、任意精度的有符號十進位制數。
		* B:構造方法
			* public BigDecimal(String val)
		* C:成員方法
			* public BigDecimal add(BigDecimal augend)
			* public BigDecimal subtract(BigDecimal subtrahend)
			* public BigDecimal multiply(BigDecimal multiplicand)
			* public BigDecimal divide(BigDecimal divisor)
		* D:案例演示
			* BigDecimal類的構造方法和成員方法使用
		十進位制表示1/3
		0.3333333333333333333333333333333333333333 
			 */
	public static void main(String[] args) {
		//System.out.println(2.0 - 1.1);
		/*BigDecimal bd1 = new BigDecimal(2.0);		//這種方式在開發中不推薦,因為不夠精確
		BigDecimal bd2 = new BigDecimal(1.1);
		
		System.out.println(bd1.subtract(bd2));*/
		
		/*BigDecimal bd1 = new BigDecimal("2.0");		//通過構造中傳入字串的方式,開發時推薦
		BigDecimal bd2 = new BigDecimal("1.1");
		
		System.out.println(bd1.subtract(bd2));*/
		
		BigDecimal bd1 = BigDecimal.valueOf(2.0);	//這種方式在開發中也是推薦的
		BigDecimal bd2 = BigDecimal.valueOf(1.1);
		
		System.out.println(bd1.subtract(bd2));
	}

}

package com.heima.otherclass;

import java.util.Date;

public class Demo6_Date {

	/**
	 * * A:Date類的概述是util包下的,不能匯入sql包的
			* 類 Date 表示特定的瞬間,精確到毫秒。 
		* B:構造方法
			* public Date()
			* public Date(long date)
		* C:成員方法
			* public long getTime()
			* public void setTime(long time)
	 */
	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類

package com.heima.otherclass;

import java.util.Date;

public class Demo6_Date {

	/**
	 * * A:Date類的概述是util包下的,不能匯入sql包的
			* 類 Date 表示特定的瞬間,精確到毫秒。 
		* B:構造方法
			* public Date()
			* public Date(long date)
		* C:成員方法
			* public long getTime()
			* public void setTime(long time)
	 */
	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);					//通過毫秒值建立時間物件
	}

}

DateFormat類

package com.heima.otherclass;

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

public class Demo7_SimpleDateFormat {

	/**
	 * * A:DateFormat類的概述
			* DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。是抽象類,所以使用其子類SimpleDateFormat
		* B:SimpleDateFormat構造方法
			* public SimpleDateFormat()
			* public SimpleDateFormat(String pattern)
		* C:成員方法
			* public final String format(Date date)
			* public Date parse(String source)
	 * @throws ParseException 
	 */
	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();	//相當於父類引用指向子類物件,右邊的方法返回一個子類物件
	}

}

Calendar類

package com.heima.otherclass;

import java.util.Calendar;

public class Demo8_Calendar {

	/**
	 * * A:Calendar類的概述
			* Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。
		* B:成員方法
			* public static Calendar getInstance()
			* public int get(int field)
	 */
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();		//父類引用指向子類物件
		//System.out.println(c);					//證明重寫了toString方法列印了物件中所有的屬性
		System.out.println(c.get(Calendar.YEAR));  	//通過欄位獲取對應的值
		System.out.println(c.get(Calendar.MONTH));
	}

}

package com.heima.otherclass;

import java.util.Calendar;

public class Demo9_Calendar {

	/**
	 * * A:Calendar類的概述
			* Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。
		* B:成員方法
			* public static Calendar getInstance()
			* public int get(int field)
		* C:成員方法
			* public void add(int field,int amount)
			* public final void set(int year,int month,int date)
		* D:案例演示
			* Calendar類的成員方法使用
	 */
	public static void main(String[] args) {
		//demo1();
		Calendar c = Calendar.getInstance();			//父類引用指向子類物件
		//c.add(Calendar.MONTH, -1);					//對指定的欄位進行向前減或向後加
		//c.set(Calendar.YEAR, 2000);					//修改指定欄位
		c.set(2000, 7, 8);
		
		System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1)) 
				+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));
	}

	public static void demo1() {
		Calendar c = Calendar.getInstance();			//父類引用指向子類物件
		//System.out.println(c);
		System.out.println(c.get(Calendar.YEAR));		//通過欄位獲取年
		System.out.println(c.get(Calendar.MONTH));		//通過欄位後期月,但是月是從0開始編號的
		System.out.println(c.get(Calendar.DAY_OF_MONTH));//月中的第幾天
		System.out.println(c.get(Calendar.DAY_OF_WEEK));//週日是第一天,週六是最後一天
		
		System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1)) 
				+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));
	}
	
	/*
	 * 將星期儲存表中進行查表
	 * 1,返回值型別String
	 * 2,引數列表int week
	 */
	
	public static String getWeek(int week) {
		String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		
		return arr[week];
	}
	
	/*
	 * 如果是個數數字前面補0
	 * 1,返回值型別String型別
	 * 2,引數列表,int num
	 */
	public static String getNum(int num) {
		/*if(num > 9) {
			return "" + num;
		}else {
			return "0" + num;
		}*/
		return num > 9 ? "" + num : "0" + num;
	}
}

package com.heima.test;

import java.util.Calendar;
import java.util.Scanner;

public class Test3 {

	/**
	 * * A:案例演示
	 * 需求:鍵盤錄入任意一個年份,判斷該年是閏年還是平年
	 * Calendar c = Calendar.getInstance();
	 * 
	 * 分析:
	 * 1,鍵盤錄入年Scanner
	 * 2,建立Calendar c = Calendar.getInstance();
	 * 3,通過set方法設定為那一年的3月1日
	 * 4,將日向前減去1
	 * 5,判斷日是多少天,如果是29天返回true否則返回false
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入年份,判斷該年份是閏年還是平年:");
		//int year = sc.nextInt();
		
		String line = sc.nextLine();				//錄入數字字串
		int year = Integer.parseInt(line);			//將數字字串轉換成數字
		boolean b = getYear(year);
		System.out.println(b);
	}

	private static boolean getYear(int year) {
		//2,建立Calendar c = Calendar.getInstance();
		Calendar c = Calendar.getInstance();
		//設定為那一年的3月1日
		c.set(year, 2, 1);
		//將日向前減去1
		c.add(Calendar.DAY_OF_MONTH, -1);
		//判斷是否是29天
		return c.get(Calendar.DAY_OF_MONTH) == 29;
	}

}