1. 程式人生 > >Object類,System類,包裝類,日期類

Object類,System類,包裝類,日期類

Object類

1,Object類是Java語言的老祖宗,所有類的祖宗類,所有類在建立物件的時候,最終都會找到Object。
   當一個類被初始化的時候,其父類也會被初始化,即一個類被構造時,其父類也要被構造。

class Supur{

	public Supur() {
		System.out.println("我是爸爸");
	}
	
}

class Sun extends Supur{

	public Sun() {
		System.out.println("兒子");
	}

}

public class Test01{
	
	public static void main(String[] args) {
		Sun sun = new Sun();
		System.out.println("hello");
	}
	
}

以下為結果:
		我是爸爸
		兒子
		hello

2,Object中的主要方法

1,public String toString()
原始碼:return getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
首先,getClass().getName() 得到的是正在執行的類的完整類名, Integer.toHexString(hashCode())獲得的是該物件的雜湊碼。
如上述例子的sun物件呼叫toString方法,得到的結果為[email protected]
該方法一般需要對其進行重寫
2,public boolean equals(Object obj)
判斷兩個物件是否相等,一般需要對其進行重寫
3,finalize()
Java的垃圾回收機制中,他是核心。當一個物件使用過後,不會再被呼叫時,會被系統自動呼叫該方法進行回收。
4,getClass()
返回正在執行時的類
剩餘的方法會在多執行緒,反射板塊涉及。

System類

1,System類包含幾個有用的類欄位和方法。 它不能被例項化。
   System類提供的System包括標準輸入,標準輸出和錯誤輸出流;
   訪問外部定義的屬性和環境變數; 一種載入檔案和庫的方法; 以及用於快速複製陣列的一部分的實用方法。
2,其所擁有的方法基本均為靜態方法,如:

1,public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
   功能就是從src陣列的srcPos索引處複製長度為length的元素至陣列dest的destPos索引處。
2,public static void gc();
   通知系統執行垃圾回收器,finalize()會立即執行。
3,public static void exit(int status)
   此方法呼叫exit類方法Runtime 。 此方法從不正常返回。 用於結束程式。
4,public static long currentTimeMillis()
   在1970年1月1日UTC之間的當前時間和午夜之間的差異,以毫秒為單位。
5,err,in,out,標準錯誤,輸入,輸出流。

包裝類

1,為什麼要使用包裝類?
   在日常使用中,我們輸入的資料一般都是以字串型別進行儲存的,但程式開發時,我們需要將字串型別轉換為對應的基本資料型別,故此引入了包裝類,用來提供更多的操作來操作基本數值。
2,8種基本資料型別包裝類。

著重介紹兩個,整形int,包裝類,Integer,字元型char,包裝類,Character;
其他資料型別的包裝類均為其資料型別首字母大寫。
3,包裝類的兩個構造方法(以Integer為例)
Integer(int value)
Integer(String s)
4,包裝類的常用方法(以Integer為例)
toString(),intValue(),parseInt(String s),hashCode(),equals()等
5,自動裝箱(基本資料型別轉換為物件),自動拆箱(物件轉換為基本資料型別)

日期類

1,Date類

Date()
 構造方法:分配一個 Date物件,並初始化它,以便它代表它被分配的時間,測量到最近的毫秒。
Date date = new Date(); System.out.println(date);
 輸出為Mon Nov 12 21:03:43 CST 2018
Date(long date)
 構造方法:分配一個 Date物件,並將其初始化為表示自稱為“時代”的標準基準時間以後的指定毫秒數,
 即1970年1月1日00:00:00 GMT。
Date date = new Date(1000*60*60*24); System.out.println(date);
 輸出為Fri Jan 02 08:00:00 CST 1970
getTime()
 返回自1970年1月1日以來,由 Date物件表示的00:00:00 GMT的毫秒數 。
Date date = new Date(1000*60*60*24); System.out.println(date.getTime());
 輸出結果為:86400000
public void setTime(long time)
 設定此 Date物件以表示1970年1月1日00:00:00 GMT後的 time毫秒的時間點。
Date date = new Date(); date.setTime(1000*60*60*24); System.out.println(date);
 輸出結果為:Fri Jan 02 08:00:00 CST 1970
 相當於Date(10006060*24)
toLocaleString()
 以當地時間格式顯示時間,但是該方法已過時,我覺得很好用。
Date date = new Date();date.setTime(1000*60*60*24);
System.out.println(date.toLocaleString());
 輸出結果為:1970-1-2 8:00:00

2,DateFormat類與SimpleDateFormat類

date感覺在使用上不是讓我們很爽,而且很多方法都已過時,故引入了DateFormat類,
DateFormat是日期/時間格式化子類的抽象類,它以語言無關的方式格式化和分析日期或時間。 日期/時間格式化子類(如SimpleDateFormat )允許格式化(即日期文字),解析(文字日期)和歸一化。 該日期表示為一個Date物件,或自1970年1月1日00:00:00 GMT以來的毫秒。
介紹幾個常用的方法,
SimpleDateFormat()
構造一個 SimpleDateFormat使用預設模式和日期格式符號為預設的 FORMAT區域設定。
SimpleDateFormat(String pattern)
使用給定模式 SimpleDateFormat並使用預設的 FORMAT語言環境的預設日期格式符號。
public final StringBuffer format(Object obj,StringBuffer toAppendTo, FieldPosition fieldPosition)
覆蓋格式。 將時間物件格式化成時間字串。 時間物件的示例是以毫秒為單位的時間值和Date物件。
public abstract Date parse(String source,ParsePosition pos)
根據給定的解析位置解析日期/時間字串。 例如, "07/10/96 4:5 PM, PDT"的時間文字將被解析為Date ,相當於Date(837039900000L) 。
舉個例子看比較舒服一點。

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

public class Test01{
	
	public static void main(String[] args) throws ParseException {
		test01();
		test02();
		test03();
	}

	private static void test03() throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		Date date = new Date();
		String s = sdf.format(date);
		System.out.println(s);
		Date parse = sdf.parse("2018年11月12日 21:41:50");
		System.out.println(parse);
		//2018年11月12日 21:42:01
		//Mon Nov 12 21:41:50 CST 2018
	}

	private static void test02() throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		Date date = new Date();
		String s = sdf.format(date);
		System.out.println(s);
		Date parse = sdf.parse("2018年11月12日");
		System.out.println(parse);
		//2018年11月12日
		//Mon Nov 12 00:00:00 CST 2018
	}

	private static void test01() throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat();
		Date date = new Date();
		String s = sdf.format(date);
		System.out.println(s);
		Date date1 = new Date();
		Date parse = sdf.parse("19-11-12 下午9:34");
		System.out.println(parse);
		//18-11-12 下午9:36
		//Tue Nov 12 21:34:00 CST 2019
	}
	
}

3,Calendar類
Calendar是一個日曆類,含有很多關於時間的常量,很方便獲取現在時間在每一年的具體位置,如2018的第幾年。

舉個例子

		Calendar calendar = Calendar.getInstance();
		int i = calendar.get(calendar.YEAR);
		int j = calendar.get(calendar.MONTH)+1;
		int j2 = calendar.get(calendar.DAY_OF_MONTH);
		System.out.println(i + "-" + j + "-" + j2);
		//2018-11-12

Date()
分配一個 Date物件,並初始化它,以便它代表它被分配的時間,測量到最近的毫秒。