存儲類的倉庫——Java常用類庫

存儲類的倉庫——Java常用類庫
Java類庫就是Java API(應用程序接口),是系統提供的已實現的標準類的集合,使用Java類庫可以完成涉及字符串處理、圖形、網絡等多方面的操作。

API概念
API就是應用程序編程接口。

String類和StringBuffer類
String類用於比較兩個字符串,查找和抽取字符串中的字符或子串,進行字符串與其他類型之間的相互轉換等。String類對象一旦被初始化就布恩那個再被改變。
StringBuffer類用於內容可以改變的字符串,可以將其他各種類型的數據增加、插入到字符串中,也可以轉置字符串中原來的內容。一旦通過StringBuffer生成了最終想要的字符串,就應該使用StringBufffer.toString()方法將其轉換成String類,隨後就可以使用String的各種方法操縱這個字符串了。
Java爲字符串提供了特別的操作符號(+),可以將其他類型的數據轉換成字符串,並前後鏈接成新的字符串。鏈接操作符(+)的功能是通過StringBuffer類和它的append()方法實現的。如:String x = “a”+4+”c”;
編譯時等於: String x = StringBuffer().append(“a”).append(4).append(“c”).toString();
在開發中,若需要頻繁的改變字符串的內容,就需要考慮使用StringBuffer類實現,因爲其內容可以改變,所以執行性能比String更高。

基本數據類型的包裝類
基本數據類型不具有對象的特性,Java中很多方法的參數都是Object,即這些方法的接收參數都是對象,同時,又需要用到這些方法來處理基本數據類型的數據,這時就用到包裝類
在這裏插入圖片描述
System類和Runtime類
Java不知全局全量和方法,所以將一些重要的方法和變量手機到統一的System類中。其中所有的成員都是靜態的,可直接使用System類名作爲前綴引用這些變量和方法。如下:
exit(int status)方法,提前終止虛擬機的運行。對於發生異常情況而終止虛擬機的運行,傳遞一個非零值作爲參數。若在用戶正常操作下終止虛擬機的運行,則傳遞零值作爲參數。
CurrentTimeMillis方法,返回自1970年1月1日0點0分0秒起至今的以毫秒爲單位的時間,這是一個long類型的大數值。在計算機內部只有數值,沒有真正的日期類型及其他各種類型,也就是說,平時用到的日期實質上就是一個數值,但通過這個數值,能夠推算出其對應的具體日期時間。
getProperties方法獲取當前虛擬機的環境屬性,每一個屬性都是變量與值以成對的形式出現。

{
	Properties sp = System.getProperties();	
	Enumberation e = sp.propertyNames();		//返回一個Enumberation類型的數據。
	while(e.hasMoreElements)	//如果還有下個一個元素。
	{
		String key = (String)e.nextElement();	//取出下一個元素。
		System.out.println(key+=+sp.getProperty(key));
	}
}

Enumeration(枚舉)接口的作用和Iterator類似,只提供了遍歷Vector和HashTable類型集合元素的功能,不支持元素的移除操作。
Vector和ArrayList有一些相似,其內部都是通過一個容量能夠動態增長的數組來實現的。不同點是Vector是線程安全的。因爲其內部有很多同步代碼快來保證線程安全。
迭代器簡介(Iterator):迭代器是一種設計模式,它是一個對象,它可以遍歷並選擇序列中的對象,而開發人員不需要了解該序列的底層結構。迭代器通常被稱爲“輕量級”對象,因爲創建它的代價小。
Hashtable同樣是基於哈希表實現的,同樣每個元素是一個key-value對,其內部也是通過單鏈表解決衝突問題,容量不足(超過了閥值)時,同樣會自動增長。Hashtable也是JDK1.0引入的類,是線程安全的,能用於多線程環境中。

Runtime類
Runtime類封裝了Java命令本身的運行進程,不能直接創建Runtime實例,但可以通過靜態方法Runtime.getRuntime獲得正在運行的Runtime對象的引用。
Java命令運行後,本身是多任務操作系統上的一個進程,在這這個進程中啓動一個新的進程,即執行其他程序時使用exec方法。exec方法返回一個代表子進程的Process類對象,通過這個對象,Java進程可以與子進程交互。

{
	Runtime run = Runtime.getRuntime();
	try
	{
		run.exec(“notepad.exe”);
	}
		catch(Exception e){e.printStackTrace();}
	}

Date與Calendar、DateFormat類
Date類用於表示日期和時間,最簡單的構造方法是Date(),它以當前的日期和時間初始化一個Date對象。但是Date並未考慮到國際化,所以需要其他兩個類。
Calendar類是一個抽象基類,主要完成日期字段之間相互操作的功能。如Calendar.add方法實現在某一日期的基礎上增加時間(年、月、日、小時等)。Calendar.set用於修改日期對象中的年月日等。Calendar.getInstance方法用於返回一個Calendar類型(更準確的說是它的某個子類)的對象實例,返回的就是預設了當前時間的GregorianCalendar類對象。

{
	Calendar c1 = Calendar.getInstance();
	c1.get(c1.YEAR);	//獲取年數
	c1.add(c1.DAY_OF_YEAR,230);	//增加天數爲230
}

DateFormat是一個具體類,具有把Date對象格式化爲本地字符串,或者通過語言分析把日期或者時間字符串轉換爲Date對象的功能。

{
	SimpleDateFormat sp1 = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
	SimpleDateFormat sp2 = new SimpleDateFormat(“yyyy年MM月dd日 hh時mm分ss秒”);
	try
	{
		Date d = sp1.parse(2005-8-11 18:30:23);	//利用sp1轉換爲Date,將數值導入
		System.out,println(sp2.format(d));		//利用sp2轉換格式,將數值導出
	}
		catch(ParseException e)
	{
		e.printStackTrace();
	}
}

Math與Random類
Math類包含了所有用於幾何和三角的浮點運算方法,這些方法都是靜態的。
Random類是隨機數產生器:

{
	Random r = new Random();
	for(int i=0;i<5;i++)
	{
		r.nextInt(100);		//隨機種子一樣,則隨機數也是一樣的
	}
}

若我們不傳入隨機種子,則系統會使用當前系統的時間作爲隨機種子。

hashCode()方法

Object類中的hashCode()方法也可以考慮覆寫,
{
	HashMap hm = new HashMap();
	hm,put(new Person(“張三”,20),”張三”);
	System.out.println(hm.get(new Person(“張三”,20)));
}
	這是輸出是爲空的,我們需要加如以下代碼:
public int hashCode()
{
	return 10;	//賦予對象散列碼
}

這樣就會輸出:”張三”
hashCode()的含義在於用於存儲散列表的時候使用,需要保證不同的對象有不同的散列表。

對象克隆
實際上就是指將對象重新複製一遍,所有具有clone功能的類都有一個特性,那就是它直接或間接的實現了Cloneable接口,否則,在嘗試調用clone()方法時,將會觸發CloneNotSupportedException異常。爲什麼要改寫Object類中的clone()方法呢?因爲clone()方法的權限是protected,所以對用戶是不可見的,所以需要用戶修改爲public。
使用 clone() 方法來拷貝一個對象即複雜又有風險,它會拋出異常,並且還需要類型轉換。

{
	try
	{
		e2 = (Employee)e1.clone();
	}catch(CloneNotSupportedException e){
		e.printStackTrace();
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章