




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 06.1 Java6.1 Java類集框架類集框架6.2 6.2 泛型和枚舉泛型和枚舉6.3 6.3 常用類常用類本章重點(diǎn)本章重點(diǎn)集合類、數(shù)學(xué)類的使用第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 16.1.1 JAVA中的類集框架中的類集框架6.1.2 List接口及實(shí)現(xiàn)類接口及實(shí)現(xiàn)類6.1.3 Set接口及實(shí)現(xiàn)類接口及實(shí)現(xiàn)類6.1.4 Map接口及實(shí)現(xiàn)類接口及實(shí)現(xiàn)類第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 2nJAVAJAVA的類集框架的類集框架實(shí)現(xiàn)了對(duì)各種數(shù)
2、據(jù)結(jié)構(gòu)的封裝,極大實(shí)現(xiàn)了對(duì)各種數(shù)據(jù)結(jié)構(gòu)的封裝,極大的降低了我們對(duì)數(shù)據(jù)管理與處理的難度。的降低了我們對(duì)數(shù)據(jù)管理與處理的難度。n所謂框架所謂框架就是一個(gè)類庫的集合。集合框架就是一個(gè)用就是一個(gè)類庫的集合。集合框架就是一個(gè)用來表示和操作集合的統(tǒng)一的架構(gòu),包含了實(shí)現(xiàn)集合的來表示和操作集合的統(tǒng)一的架構(gòu),包含了實(shí)現(xiàn)集合的接口與類。接口與類。n類集類集(Collection(Collection或稱為容器或稱為容器) )是一種包含其它對(duì)象,是一種包含其它對(duì)象,并提供對(duì)所包含對(duì)象的操作方法的對(duì)象,其包含的對(duì)并提供對(duì)所包含對(duì)象的操作方法的對(duì)象,其包含的對(duì)象可以由同一類型的對(duì)象組成,也可以由不同類型的象可以由同一類
3、型的對(duì)象組成,也可以由不同類型的對(duì)象組成。對(duì)象組成。6.1 Java中的類集框架 概念概念第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 36.1 Java中的類集框架 層次層次第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 4nCollection:集合層次中的根接口,集合層次中的根接口,JDKJDK沒有提供這個(gè)接口沒有提供這個(gè)接口直接的實(shí)現(xiàn)類。直接的實(shí)現(xiàn)類。nSet:不能包含重復(fù)的元素。對(duì)象可能不是按存放的次序存不能包含重復(fù)的元素。對(duì)象可能不是按存放的次序存放,也就是說不能像數(shù)組一樣按索引的方式進(jìn)行訪問,放,也就是說不能像數(shù)組一樣按索引的
4、方式進(jìn)行訪問,SortedSetSortedSet是一個(gè)按照升序排列元素的是一個(gè)按照升序排列元素的SetSet。nList:是一個(gè)有序的集合,可以包含重復(fù)的元素。提供了按是一個(gè)有序的集合,可以包含重復(fù)的元素。提供了按索引訪問的方式。索引訪問的方式。nMap:包含了包含了key-valuekey-value對(duì)。對(duì)。MapMap不能包含重復(fù)的不能包含重復(fù)的keykey。SortedMap是一個(gè)按照升序排列是一個(gè)按照升序排列keykey的的MapMap。6.1 Java中的類集框架 接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 5SortedSetSetListM
5、apHashSet LinkedHashSet TreeSet ArrayList LinkedList SortedMapHashMap TreeMap 6.1 Java中的類集框架 接口與類接口與類第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 6nCollection接口是接口是構(gòu)造類集框架的基礎(chǔ)構(gòu)造類集框架的基礎(chǔ)。它聲明所有類集都將擁有的核心方法,因?yàn)樗蓄惣紝?shí)現(xiàn)Collection,所以熟悉它的方法對(duì)于清楚地理解框架是必要的。下面是該類接口中聲明的最常用的方法:下面是該類接口中聲明的最常用的方法:nboolean add(Object obj) 將obj添
6、加對(duì)類集中nvoid clear( ) 從類集中刪除所有元素,即清空類集nboolean contains(Object obj) 如果obj是調(diào)用類集的一個(gè)元素,則返回true,否則,返回false,依賴于對(duì)象的equals()方法nboolean isEmpty( ) 如果調(diào)用類集是空的,則返回true;否則返回falsenIterator iterator( ) 返回調(diào)用類集的迭代器nboolean remove(Object obj) 從調(diào)用類集中刪除obj的一個(gè)實(shí)例。如果這個(gè)元素被刪除了,則返回true;否則返回falsenint size( ) 返回調(diào)用類集中元素的個(gè)數(shù)6.1 Ja
7、va中的類集框架 CollectionCollection接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 7nboolean addAll(Collection c) 將集合c中的所有元素都加入到當(dāng)前類集中nboolean containsAll(Collection c) 如果調(diào)用類集包含了c中的所有元素,則返回true;否則,返回falsenboolean removeAll(Collection c) 從調(diào)用類集中刪除c的所有元素。如果類集被改變了(也就是說元素被刪除了),則返回true;否則返回falsenboolean retainAll(Colle
8、ction c)刪除調(diào)用類集中除了包含在c中的元素之外的全部元素。如果類集被改變了(也就是說元素被刪除了),則返回true,否則返回falsenObject toArray( ) 返回一個(gè)數(shù)組,該數(shù)組包含了所有存儲(chǔ)在調(diào)用類集中的元素。數(shù)組元素是類集元素的拷貝nObject toArray(Object array ) 返回一個(gè)數(shù)組,該數(shù)組僅僅包含了那些類型與數(shù)組元素類型匹配的類集元素。數(shù)組元素是類集元素的拷貝。如果array的大小與匹配元素的個(gè)數(shù)相等,它們被返回到array。如果array的大小比匹配元素的個(gè)數(shù)小,將分配并返回一個(gè)所需大小的新數(shù)組,如果array的大小比匹配元素的個(gè)數(shù)大,在數(shù)組
9、中,在類集元素之后的單元被置為null。如果任一類集元素的 類 型 都 不 是 array 的 子 類 型 , 則 引 發(fā) 一 個(gè)ArrayStoreException異常6.1 Java中的類集框架 CollectionCollection接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 8nArrayList:我們可以將其看作是能夠自動(dòng)增長(zhǎng)容量的數(shù)組。n利用ArrayList的toArray()返回一個(gè)數(shù)組。nArrays.asList()返回一個(gè)列表。List stooges = Arrays.asList(Larry, Moe, Curly); nLin
10、kedList是采用雙向循環(huán)鏈表實(shí)現(xiàn)的。n利用LinkedList實(shí)現(xiàn)棧(stack)、隊(duì)列(queue)、雙向隊(duì)列,包含:getFirst getLast addFirst addLast removeFirst removeLastnArrayList底層采用數(shù)組完成,而LinkedList則是以一般的雙向鏈表(double-linked list)完成,其內(nèi)每個(gè)對(duì)象除了數(shù)據(jù)本身外,還有兩個(gè) 引用,分別指向前一個(gè)元素和后一個(gè)元素。n如果我們經(jīng)常在List的開始處增加元素,或者在List中進(jìn)行插入和刪除操作,應(yīng)該使用LinkedList,否則的話,使用ArrayList將更加快速。6.1 J
11、ava中的類集框架 ListList接口接口 類類第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 9n使用使用ListList接口的實(shí)現(xiàn)類接口的實(shí)現(xiàn)類Collection col=new ArrayList(); col=new LinkedList(); col=new Vector(); /以下代碼使用這三個(gè)類輸出效果一致以下代碼使用這三個(gè)類輸出效果一致 col.add(new Integer(50); col.add(new Float(3.14f); col.add(hello); col.add(new Integer(50); /添加添加 col.add(
12、new Date(); Iterator iter = col.iterator(); /獲取每一元素,并輸出獲取每一元素,并輸出 while (iter.hasNext() Object item = iter.next(); System.out.println(item); col.remove(new Float(3.14f); /刪除刪除 System.out.println(集合長(zhǎng)度:集合長(zhǎng)度:+col.size(); System.out.println(col.contains(hello); /是否有是否有hello col.clear(); /清空清空 案例案例6-16.1
13、 Java中的類集框架 ListList類實(shí)例類實(shí)例第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 10nListList接口使用舉例接口使用舉例 List lst=new ArrayList(); lst.add(new Integer(50); lst.add(hello); lst.add(new Date(); lst.add(0,new Integer(30); /在指定位置添加在指定位置添加 /輸出輸出 for(int i=0;ilst.size();i+) System.out.println(lst.get(i); System.out.println
14、(hello是類集中的第是類集中的第+lst.indexOf(hello)+個(gè)元素個(gè)元素); lst.remove(new Integer(30); lst.remove(1); /根據(jù)編號(hào)刪除根據(jù)編號(hào)刪除6.1 Java中的類集框架 ListList類實(shí)例類實(shí)例第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 11nTreeSet是依靠TreeMap來實(shí)現(xiàn)的。nTreeSet是一個(gè)有序集合,TreeSet中元素將按照升序排列,缺省是按照自然順序進(jìn)行排列,意味著TreeSet中元素要實(shí)現(xiàn)Comparable接口。n我們可以在構(gòu)造TreeSet對(duì)象時(shí),傳遞實(shí)現(xiàn)了Compa
15、rator接口的比較器對(duì)象。nHashSet是基于Hash算法實(shí)現(xiàn)的,其性能通常都優(yōu)于TreeSet。我們通常都應(yīng)該使用我們通常都應(yīng)該使用HashSet,在我們需要,在我們需要排序的功能時(shí),我們才使用排序的功能時(shí),我們才使用TreeSet。n案例案例6-36.1 Java中的類集框架 SetSet接口接口 類類第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 12n使用使用SetSet接口的實(shí)現(xiàn)類接口的實(shí)現(xiàn)類Collection col=new TreeSet(); col=new HashSet(); col.add(new Integer(50); col.add(
16、new Integer(50); col.add(hello); col.add(new Float(3.14f); col.add(new Date(); /添加添加 /添加過程會(huì)出異常,為什么? Iterator iter = col.iterator(); /獲取每一元素,并輸出獲取每一元素,并輸出 while (iter.hasNext() Object item = iter.next(); System.out.println(item); col.remove(new Float(3.14f); /刪除刪除 System.out.println(集合長(zhǎng)度:集合長(zhǎng)度:+col.si
17、ze(); System.out.println(col.contains(hello); /是否有是否有hello col.clear(); /清空清空/考慮一下,與使用考慮一下,與使用List接口的實(shí)現(xiàn)類相比,效果有什么不同接口的實(shí)現(xiàn)類相比,效果有什么不同6.1 Java中的類集框架 SetSet類實(shí)例類實(shí)例第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 13nVectorVector是是JDK1.2JDK1.2之前的類,之前的類,向量向量。但為了程序的通用性,最。但為了程序的通用性,最好不要使用其特有的方法,下面的代碼演示了其特有方法的好不要使用其特有的方法,下
18、面的代碼演示了其特有方法的使用使用 Vector v=new Vector(); v.addElement(aaaa); /添加添加 ,等同于等同于v.add(aaaa); Object obj=v.elementAt(0); /獲取指定位置的元素,等同于獲取指定位置的元素,等同于 v.get(0); v.removeElement(aaa); /刪除,等同于刪除,等同于v.remove(aaa) v.removeElementAt(0); /等同于等同于v.remove(0) v.removeAllElements(); /清空,等同于清空,等同于v.clear() Enumeration
19、enu=v.elements(); while(enu.hasMoreElements() /輸出輸出 System.out.println(enu.nextElement();6.1 Java中的類集框架 VectorVector第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 14n映射(映射(map)是一個(gè)存儲(chǔ)關(guān)鍵字和值的關(guān)聯(lián)或者說是關(guān)鍵字是一個(gè)存儲(chǔ)關(guān)鍵字和值的關(guān)聯(lián)或者說是關(guān)鍵字/ /值對(duì)的對(duì)象。給定一個(gè)關(guān)鍵字,可以得到它的值。關(guān)鍵字和值對(duì)的對(duì)象。給定一個(gè)關(guān)鍵字,可以得到它的值。關(guān)鍵字和值都是對(duì)象。關(guān)鍵字必須是唯一的。但值是可以被復(fù)制的。值都是對(duì)象。關(guān)鍵字必須是唯
20、一的。但值是可以被復(fù)制的。nMap接口接口映射唯一關(guān)鍵字到值映射唯一關(guān)鍵字到值。關(guān)鍵字(關(guān)鍵字(keykey)是以后用于)是以后用于檢索值的對(duì)象。給定一個(gè)關(guān)鍵字和一個(gè)值,可以存儲(chǔ)這個(gè)值到檢索值的對(duì)象。給定一個(gè)關(guān)鍵字和一個(gè)值,可以存儲(chǔ)這個(gè)值到一個(gè)一個(gè)MapMap對(duì)象中。當(dāng)這個(gè)值被存儲(chǔ)以后,就可以使用它的關(guān)鍵對(duì)象中。當(dāng)這個(gè)值被存儲(chǔ)以后,就可以使用它的關(guān)鍵字來檢索它。字來檢索它。n映射循環(huán)使用兩個(gè)基本操作:映射循環(huán)使用兩個(gè)基本操作:get( )和和put( )。使用使用put( )put( )方法可以將一個(gè)指定了關(guān)鍵字和值的值加入映射。為了方法可以將一個(gè)指定了關(guān)鍵字和值的值加入映射。為了得到值,可以
21、通過將關(guān)鍵字作為參數(shù)來調(diào)用得到值,可以通過將關(guān)鍵字作為參數(shù)來調(diào)用get( )get( )方法。調(diào)用方法。調(diào)用返回該值。返回該值。6.1 Java中的類集框架 MapMap第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 15void clear( ) 從調(diào)用映射中刪除所有的關(guān)鍵字/值對(duì)boolean containsKey(Object k) 檢查調(diào)用映射中是否包含關(guān)鍵字Kboolean containsValue(Object v) 檢查調(diào)用映射中是否包含值VObject get(Object k) 返回與關(guān)鍵字返回與關(guān)鍵字k相關(guān)聯(lián)的值相關(guān)聯(lián)的值boolean isE
22、mpty( ) 如果調(diào)用映射是空的,則返回true;否則返回falseObject put(Object k, Object v)將一個(gè)鍵值對(duì)加入調(diào)用映射Object remove(Object k) 刪除關(guān)鍵字等于k的鍵值對(duì)int size( ) 返回映射中關(guān)鍵字/值對(duì)的個(gè)數(shù)Set entrySet( ) 返回包含了映射中的項(xiàng)的集合(Set)。該集合包含了類型Map.Entry的對(duì)象。這個(gè)方法為調(diào)用映射提供了一個(gè)集合“視圖”Set keySet( ) 返回一個(gè)包含調(diào)用映射中關(guān)鍵字的集合(Set)。這個(gè)方法為調(diào)用映射的關(guān)鍵字提供了一個(gè)集合“視圖”Collection values( )返回一個(gè)
23、包含了映射中的值的類集。這個(gè)方法為映射中的值提供了一個(gè)類集“視圖”6.1 Java中的類集框架 MapMap接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 16nMap接口的可用實(shí)現(xiàn)類主要有接口的可用實(shí)現(xiàn)類主要有HashMap,TreeMap,Hashtable,PropertiesnHashtable,Properties是是JDK1.0/1.1中的中的nHashMap對(duì)對(duì)key進(jìn)行散列。進(jìn)行散列。nTreeMap按照按照key進(jìn)行排序。進(jìn)行排序。n和和Set類似,類似,HashMap的速度通常都比的速度通常都比TreeMap快,只有在需要排序的功能的時(shí)候,
24、才使用快,只有在需要排序的功能的時(shí)候,才使用TreeMap。n案例案例6-46.1 Java中的類集框架 MapMap接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 17n對(duì)對(duì)Map接口的操作,常常是轉(zhuǎn)換為對(duì)類集的操接口的操作,常常是轉(zhuǎn)換為對(duì)類集的操作,作,一個(gè)一個(gè)Map可通過自身的方法轉(zhuǎn)換為三個(gè)類可通過自身的方法轉(zhuǎn)換為三個(gè)類集集:Key,Value,Key+ValuenSet keys=map.keySet()nCollections values=map.values();nSet kvs=map.entrySet(); 內(nèi)容為內(nèi)容為Map.Entry的集
25、合的集合6.1 Java中的類集框架 MapMap接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 18Map m=new HashMap(); /TreeMap,Hashtable,Properties均可均可m.put(張三,);m.put(李四,);m.put(王五,);m.put(張三,); /覆蓋掉第一個(gè)值System.out.println(是否有李四的電話號(hào)碼:” +m.containsKey(李四);m.remove(王五); /刪除王五的記錄String zsCode=(String)m.get(張三);6.1 Java中的類集框架 MapMa
26、p接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 19 /輸出所有電話薄 /通過迭代Key Set keys=m.keySet(); Iterator iter = keys.iterator(); while (iter.hasNext() Object key =iter.next(); Object value=m.get(key); System.out.println(key+:+value); /通過迭代MapEntry,一個(gè)Map.Entry是一個(gè)Key+value的組合 Set entrys=m.entrySet(); Iterator itr
27、 = entrys.iterator(); while (itr.hasNext() Map.Entry entry = (Map.Entry)itr.next(); String key=(String)entry.getKey(); String value=(String)entry.getValue(); System.out.println(key+:+value);6.1 Java中的類集框架 MapMap接口接口第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 20n屬性(屬性(PropertiesProperties)是)是HashtableHashta
28、ble的一個(gè)子類。的一個(gè)子類。它用來保持值的列表,在其中關(guān)鍵字和值都是字符串(String)nPropertiesProperties類的一個(gè)有用的功能是可以指定一個(gè)默認(rèn)屬性,類的一個(gè)有用的功能是可以指定一個(gè)默認(rèn)屬性,如果沒有值與特定的關(guān)鍵字相關(guān)聯(lián),則返回這個(gè)默認(rèn)屬性。例如,默認(rèn)值可以與關(guān)鍵字一起在getProperty( )方法中被指定如getProperty(“name”,“default value”)。如果“name”值沒有找到,則返回“defaultvalue”nPropertiesProperties中主要提供了以下獨(dú)特的方法中主要提供了以下獨(dú)特的方法: : Object setP
29、roperty(String key, String value) 添加值對(duì),key與Value均為字符串 String getProperty(String key) 根據(jù)key檢索對(duì)應(yīng)的Value void store(OutputStream out, String header) 將所有的鍵值對(duì)寫入指定輸出流 void load(InputStream inStream) 從指定輸入流中載入鍵值對(duì) voidlist(PrintWriter out) 用指定的流顯示鍵值對(duì)內(nèi)容 6.1 Java中的類集框架 PropertiesProperties第六章第六章 JavaJava工具類工具類
30、 PandaPanda制作制作 21n用用ArrayList代替了代替了Vector。n用用HashMap代替了代替了Hashtable。n用用LinkedList代替了代替了Stack。n相對(duì)于ArrayList和HashMap,Vector和Hashtable中所有的方法都是線程同步的。第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 22n類集框架類集框架為程序員提供了一個(gè)功能強(qiáng)大的設(shè)計(jì)方案以解決編為程序員提供了一個(gè)功能強(qiáng)大的設(shè)計(jì)方案以解決編程過程中面臨的大多數(shù)任務(wù)程過程中面臨的大多數(shù)任務(wù)。下一次當(dāng)你需要。下一次當(dāng)你需要存儲(chǔ)和檢索信存儲(chǔ)和檢索信息息時(shí),可考慮使用類
31、集。記住,類集不僅僅是專為那些時(shí),可考慮使用類集。記住,類集不僅僅是專為那些“大大型作業(yè)型作業(yè)”,例如聯(lián)合數(shù)據(jù)庫,郵件列表或產(chǎn)品清單系統(tǒng)等所,例如聯(lián)合數(shù)據(jù)庫,郵件列表或產(chǎn)品清單系統(tǒng)等所專用的。它們對(duì)于一些小型作業(yè)也是很有效的。例如,專用的。它們對(duì)于一些小型作業(yè)也是很有效的。例如,TreeMap可以給出一個(gè)很好的類集以保留一組文件的字典結(jié)可以給出一個(gè)很好的類集以保留一組文件的字典結(jié)構(gòu)。構(gòu)。TreeSet在在存儲(chǔ)工程管理信息時(shí)是十分有用的存儲(chǔ)工程管理信息時(shí)是十分有用的。坦白地說,。坦白地說,對(duì)于采用基于類集的解決方案而受益的問題種類只受限于你對(duì)于采用基于類集的解決方案而受益的問題種類只受限于你的想
32、象力的想象力。第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 236.2.1 Java中的泛型中的泛型6.2.2 Java中的枚舉中的枚舉第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 24泛型是泛型是Java SE 1.5Java SE 1.5的新特性,泛型的本質(zhì)的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。這種參數(shù)類型可以用在被指定為一個(gè)參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口、泛型方法。泛型接口、
33、泛型方法。 JavaJava語言引入泛型語言引入泛型的好處是安全簡(jiǎn)單。的好處是安全簡(jiǎn)單。6.2 Java中的泛型第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 25public class StringFoo private String x; public StringFoo(String x) this.x = x; public String getX() return x; public void setX(String x) this.x = x; public class DoubleFoo private Double x; public DoubleF
34、oo(Double x) this.x = x; public Double getX() return x; public void setX(Double x) this.x = x; 以上的代碼實(shí)在無聊以上的代碼實(shí)在無聊6.2 Java中的泛型 引入定義定義第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 26public class ObjectFoo private Object x; public ObjectFoo(Object x) this.x = x; public Object getX() return x; public void setX(O
35、bject x) this.x = x; 6.2 Java中的泛型 引入定義引入定義第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 27public class ObjectFooDemo public static void main(String args) ObjectFoo strFoo = new ObjectFoo( new StringFoo(Hello Generics!); ObjectFoo douFoo = new ObjectFoo( new DoubleFoo(Double(33); ObjectFoo objFoo = new Object
36、Foo(new Object(); System.out.println(strFoo.getX=+ (StringFoo) strFoo.getX(); System.out.println(douFoo.getX=+ (DoubleFoo) douFoo.getX(); System.out.println(objFoo.getX=+objFoo.getX(); 6.2 Java中的泛型引入引入定義定義第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 28public class GenericsFoo private T x; public GenericsFoo
37、(T x) this.x = x; public T getX() return x; public void setX(T x) this.x = x; 6.2 Java中的泛型 如何定義如何定義第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 29public class GenericsFooDemo public static void main(String args) GenericsFoo strFoo=new GenericsFoo(Hello Generics!); GenericsFoo douFoo=new GenericsFoo(new Doub
38、le(33); GenericsFoo objFoo=new GenericsFoo(new Object(); System.out.println(strFoo.getX=+strFoo.getX(); System.out.println(douFoo.getX=+douFoo.getX(); System.out.println(objFoo.getX=+objFoo.getX(); 6.2 Java中的泛型 使用泛型使用泛型第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 30n枚舉的本質(zhì)是類枚舉的本質(zhì)是類:n定義枚舉:定義枚舉:n可以有方法,包括構(gòu)造方法???/p>
39、以有方法,包括構(gòu)造方法。n枚舉類可以實(shí)現(xiàn)接口。枚舉類可以實(shí)現(xiàn)接口。n每個(gè)枚舉值可以實(shí)現(xiàn)接口每個(gè)枚舉值可以實(shí)現(xiàn)接口n帶有抽象方法的枚舉類帶有抽象方法的枚舉類6.2 Java中的枚舉型 要點(diǎn)要點(diǎn)第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 31public enum ENumColor Red,Orange,Yellow,Green,Blue; public String getColorString() switch(this.ordinal() case 0: return Color is Red; case 1: return Color is Orange;
40、case 2: return Color is Yellow; case 3: return Color is Green; case 4: return Color is Blue; default: return invalid Color; ;6.2 Java中的枚舉型 定義定義第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 32public class ENumExample public static void main(String args) for(ENumColor color:ENumColor.values() System.out.printl
41、n(color+ - + color.getColorString(); System.out.println(nnXXXX Const value:+ ENumColor.Yellow); 6.2 Java中的枚舉型 應(yīng)用應(yīng)用第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 33n了解了解 java.lang 包包n掌握包裝類掌握包裝類n掌握掌握String、StringBuilder、StringBuffer n以下類:以下類: Class Object Date Calendar Math與 Math.random( ) Random類 第六章第六章 JavaJa
42、va工具類工具類 PandaPanda制作制作 34使用對(duì)象中的 getClass( ) 方法使用靜態(tài) forName( ) 方法使用自定義 ClassLoader 對(duì)象加載新類創(chuàng)建的對(duì)象創(chuàng)建的對(duì)象或或或或無需聲明自動(dòng)創(chuàng)建對(duì)象通過通過6.3 Class類 特點(diǎn)特點(diǎn)第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 35class StoreString protected StoreString() private String name = diana; class StoreInteger extends StoreString protected StoreInte
43、ger() private int deptno; public class ClassDemo protected ClassDemo() public static void main(String args) StoreString objString = new StoreString(); StoreInteger objInteger = new StoreInteger(); Class objClass; objClass = objString.getClass(); System.out.println(“objString 對(duì)象的類型是: “ + objClass.get
44、Name(); objClass = objInteger.getClass(); System.out.println(“objInteger 對(duì)象的類型是: + objClass.getName(); objClass = objClass.getSuperclass(); System.out.println(“objInteger的父類是 + objClass.getName(); 6.3 Class類 使用使用第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 36方法說明booleanequals(Objectobj)將當(dāng)前對(duì)象實(shí)例與給定的對(duì)象進(jìn)行比較,檢將當(dāng)
45、前對(duì)象實(shí)例與給定的對(duì)象進(jìn)行比較,檢查查它們是否相等它們是否相等void finalize() throwsThrowable當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。通用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。通常被子類重寫常被子類重寫String toString()返回此對(duì)象的字符串表示返回此對(duì)象的字符串表示void wait() throwsInterruptedException使當(dāng)前線程進(jìn)入等待狀態(tài)使當(dāng)前線程進(jìn)入等待狀態(tài)n所有類的父類默認(rèn)情況下,用戶定義的類擴(kuò)展自所有類的父類默認(rèn)情況下,用戶定義的類擴(kuò)展自 Object
46、類類6.3 Object類 使用使用第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 37nDate 類表示日期和時(shí)間類表示日期和時(shí)間n提供操縱日期和時(shí)間各組成部分的方法提供操縱日期和時(shí)間各組成部分的方法nDate 類的最佳應(yīng)用之一是獲取系統(tǒng)當(dāng)前時(shí)間類的最佳應(yīng)用之一是獲取系統(tǒng)當(dāng)前時(shí)間構(gòu)造方法說明Date()使用當(dāng)天的日期創(chuàng)建使用當(dāng)天的日期創(chuàng)建 DateDate(long dt)使用自使用自 1970 年年 1 月月 1 日以后的指定毫秒日以后的指定毫秒數(shù)創(chuàng)建數(shù)創(chuàng)建 Date6.3 Date類 使用使用第六章第六章 JavaJava工具類工具類 PandaPanda制作制
47、作 38void display() String strDate , strTime = ; Date objDate = new Date(); System.out.println(“今天的日期是: + objDate); long time = objDate.getTime(); System.out.println(“自 1970 年 1 月 1 日起 + “以毫秒為單位的時(shí)間 (GMT): + time); strDate = objDate.toString(); / 提取 GMT 時(shí)間 strTime = strDate.substring(11 , (strDate.len
48、gth() - 4); / 按小時(shí)、分鐘和秒提取時(shí)間 strTime = “時(shí)間: + strTime.substring(0 , 8); System.out.println(strTime); 6.3 Date類 使用使用第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 39import java.util.*;import java.text.*;class AAApublic static void main(String args) Random rnd=new Random();int x=rnd.nextInt();System.out.println(H
49、ello World!+x);double d=Math.random();System.out.println(Hello World!=+d);SimpleDateFormat sd=new SimpleDateFormat( yyyy:MM:dd-hh-mm-ss);System.out.println(sd.format(new Date();6.3 Date類 使用使用第六章第六章 JavaJava工具類工具類 PandaPanda制作制作 40n此類生成隨機(jī)數(shù)此類生成隨機(jī)數(shù)n兩種構(gòu)造方法兩種構(gòu)造方法nRandom類的方法類的方法: new Random(long);沒有參數(shù) nextInt() nextFloat() nextDouble()Double d=Math.random(); /在 01之間Random rnd=new Random();int x=rnd.nextInt(1000); /在01000之間int x=rnd.nex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)內(nèi)部四風(fēng)問題與改進(jìn)措施
- 展商參展安全協(xié)議及風(fēng)險(xiǎn)防控
- 重大疾病研究樣本運(yùn)輸與專業(yè)保存協(xié)議
- 醫(yī)藥研發(fā)合作項(xiàng)目成果保密補(bǔ)充協(xié)議
- 跨區(qū)域股權(quán)轉(zhuǎn)讓稅費(fèi)結(jié)算與減免協(xié)議
- 電池回收拆解與新能源汽車產(chǎn)業(yè)鏈深度合作協(xié)議
- 五年級(jí)下學(xué)期英語口語提升計(jì)劃
- 2025新人教版三年級(jí)道德與法治計(jì)劃
- 2025年超細(xì)粉碎設(shè)備(氣流磨)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 醫(yī)療設(shè)備生產(chǎn)進(jìn)度優(yōu)化措施
- 腸梗阻課件教學(xué)課件
- 寧夏銀川市2023?2024學(xué)年高一下學(xué)期期中考試 數(shù)學(xué)試卷(含解析)
- 浙江浙達(dá)環(huán)境科技有限公司年收集、貯存及轉(zhuǎn)運(yùn)危險(xiǎn)廢物5000噸的搬遷項(xiàng)目環(huán)評(píng)報(bào)告
- 抗凝劑皮下注射技術(shù)臨床實(shí)踐指南(2024版)解讀
- 2024年全球及中國(guó)一次性喉鏡片和手柄行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 湖南張家界事業(yè)單位招聘考試高頻題庫帶答案2025年
- 2025-2030中國(guó)智慧港口行業(yè)市場(chǎng)深度調(diào)研及競(jìng)爭(zhēng)格局與發(fā)展趨勢(shì)研究報(bào)告
- 2025四川眉山市國(guó)有資本投資運(yùn)營(yíng)集團(tuán)有限公司招聘50人筆試參考題庫附帶答案詳解
- 2024年新疆喀什公務(wù)員錄用考試《行測(cè)》真題及答案
- 蒙醫(yī)藥基礎(chǔ)知識(shí)課件
- 主體結(jié)構(gòu)及裝飾裝修D(zhuǎn)類復(fù)習(xí)試題有答案
評(píng)論
0/150
提交評(píng)論