第7章2常用系統(tǒng)類_第1頁(yè)
第7章2常用系統(tǒng)類_第2頁(yè)
第7章2常用系統(tǒng)類_第3頁(yè)
第7章2常用系統(tǒng)類_第4頁(yè)
第7章2常用系統(tǒng)類_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、17.5 基本類型包裝器與泛型基本類型包裝器: 將每種基本類型包裝成一種類,一個(gè)包裝器類的對(duì)象可以存儲(chǔ)對(duì)應(yīng)基本數(shù)據(jù)類型,還可以提供相關(guān)的方法.int Integer byte Bytechar Character short Shortfloat Float double Double2基本數(shù)據(jù)類型 - 包裝器類int i=10;Integer num=new Integer(i);3Integerl屬性4 int i=10; Integer num=new Integer(i); System.out.println(Integer.BYTES); System.out.println(In

2、teger.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(Integer.SIZE); System.out.println(Integer.TYPE.toString();5方法:byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() 6 int i=65535; Integer num=new Integer(i); System.out.

3、println(num.byteValue(); System.out.println(num.shortValue(); System.out.println(Value(); System.out.println(num.floatValue(); System.out.println(num.doubleValue();7static int parseInt(String s) int x=Integer.parseInt(123); System.out.println(x); /123static int parseInt(String s, int radix) i

4、nt x=Integer.parseInt(123,16); System.out.println(x); /10進(jìn)制的2918public static String toBinaryString(int i) 以二進(jìn)制(基數(shù) 2)無(wú)符號(hào)整數(shù)形式返回一個(gè)整數(shù)參數(shù)的字符串表示形式。 public static String toOctalString(int i)public static String toHexString(int i) System.out.println(Integer.toBinaryString(10); /1010 9public static int rotat

5、eLeft(int i, int distance) 返回根據(jù)指定的位數(shù)循環(huán)左移指定的 int 值的二進(jìn)制補(bǔ)碼表示形式而得到的值。(位是從左邊(即高位)移出,從右邊(即低位)再進(jìn)入) public static int rotateRight(int i, int distance)10 int x=10; System.out.println(Integer.toBinaryString(x); int y=Integer.rotateLeft(x, 2); System.out.println(Integer.toBinaryString(y);11l裝包(將基本類型包裝成一個(gè)類): In

6、teger x=new Integer(5); Integer x=5; /自動(dòng)進(jìn)行裝包;l拆包 int i=Value(); int i=x; /自動(dòng)進(jìn)行拆包127.5.2 泛型l在一個(gè)類中,不允許兩個(gè)方法的定義相同,但返回值不同. public int getX() return x1; public Float getX() return x2; 13lJava用泛型來(lái)解決:(1) 泛型類的定義(T做為一種類型,不能為基本類型): class PointDemo private T x; public void setX(T x) this.x=x; 14l(2)定義泛型類的對(duì)

7、象(確定T的類型) PointDemo p1=new PointDemo(); p1.setX(30); p1.setX(50);15 PointDemo p2=new PointDemo(); p1.setX(30.2f); p1.setX(50.1f);167.6 集合類l集合類相當(dāng)于一個(gè)容器,在容器中的都是類的對(duì)象;ljava.util 接口Collection,它定義了一組允許重復(fù)的對(duì)象。Collection接口派生了兩個(gè)子接口Set和List;17lSet接口 Set接口繼承于Collection接口,它沒(méi)有提供額外的方法,但實(shí)現(xiàn)了Set接口的集合類中的元素是無(wú)序且不可重復(fù)。 特征:

8、無(wú)序且不可重復(fù)。 主要實(shí)現(xiàn)類: HashSet和TreeSet18 List接口同樣也繼承于Collection接口,但是與Set接口恰恰相反,List接口的集合類中的元素是對(duì)象有序且可重復(fù)(每一個(gè)對(duì)象都有一個(gè)序號(hào))。 特征:有序且可重復(fù)。 兩個(gè)重要的實(shí)現(xiàn)類:ArrayList和LinkedList 1.ArrayList特點(diǎn)是有序可重復(fù)的 2.LinkedList是一個(gè)雙向鏈表結(jié)構(gòu)的。19207.6.1 ArrayListl數(shù)組列表,可以存儲(chǔ)重復(fù)對(duì)象,特征和數(shù)組很接近,但大小可以動(dòng)態(tài)改變.lArrayList() 構(gòu)造一個(gè)初始容量為 10 的空列表。 lArrayList(Collectio

9、n c) lArrayList(int initialCapacity) 構(gòu)造一個(gè)具有指定初始容量的空列表。 21l boolean add(E e) 將指定的元素添加到此列表的尾部。 l void add(int index, E element) 將指定的元素插入此列表中的指定位置。boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。 22lisEmpty() 如果此列表中沒(méi)有元素,則返回 truelget(int index) 返回此列表中指定位置上的元素。l int indexOf(Object o) 返回此列表中首次出現(xiàn)的指定元素的索引

10、,或如果此列表不包含元素,則返回 -1。 23 E remove(int index) 移除此列表中指定位置上的元素。 boolean remove(Object o) 移除此列表中首次出現(xiàn)的指定元素(如果存在)。 int size() 返回此列表中的元素?cái)?shù)。 24l void clear() 移除此列表中的所有元素。 25 ArrayList a=new ArrayList(); a.add(5); a.add(abc); a.add(new Date(); System.out.println(a.size(); a.add(2,def); String str=(String)a.get

11、(2); /使用get一定要將返回值進(jìn)行類型轉(zhuǎn)換 System.out.println(str); 26if(a.contains(def) System.out.println(true); a.remove(def); System.out.println(a.indexOf(def); a.clear();27ljava.util.ArrayListArrayList a=new ArrayList();a.add(a);a.add(b);a.add(c);String str=a.get(2); /不需要強(qiáng)制類型轉(zhuǎn)換; a.add(123); /報(bào)錯(cuò).28l作業(yè)更新: 怎樣要求變量名不

12、能為關(guān)鍵字? 構(gòu)建數(shù)組列表,將關(guān)鍵字保存在數(shù)組列表中,將分離出變量名與關(guān)鍵字進(jìn)行比較。29作業(yè): 20個(gè)小朋友玩游戲,按順序編號(hào)(1-20)后圍成一個(gè)圈,從第一個(gè)開(kāi)始報(bào)數(shù)(1-13),每次報(bào)到7的小朋友淘汰,報(bào)到13后,下一個(gè)小朋友又從1開(kāi)始循環(huán)報(bào)數(shù),請(qǐng)問(wèn)最后剩下的一個(gè)小朋友的編號(hào)是多少?307.6.2 Vector類l屬性: elementCount:對(duì)象中的組件數(shù); 方法: void addElement(Object obj); void insertElementAt(Object obj,int index); void removeAllElement();31 void remo

13、veElement(Object obj); void removeElementAt(int index); Object firstElement(); Object lastElement(); Object ElementAt(int index); Boolean contains(OBject elem);32lP179 例7-25;337.6.3 HashSet類l用哈希算法確定元素在集合中的位置.HashSet() ;構(gòu)造一個(gè)新的空 set,其底層 HashMap 實(shí)例的默認(rèn)初始容量是 16,加載因子是 0.75。 元素總量/ Hashtable 可擁有的元素?cái)?shù)=加載因子 ,加

14、載因子是表示Hsah表中元素的填滿的程度.若加載因子越大,填滿的元素越多,空間利用率高了,但沖突的機(jī)會(huì)加大了.反之,加載因子越小,填滿的元素越少,好處是:沖突的機(jī)會(huì)減小了,但空間浪費(fèi)多了.34HashSet(int initialCapacity) 構(gòu)造一個(gè)新的空 set,其底層 HashMap 實(shí)例具有指定的初始容量和默認(rèn)的加載因子(0.75)。 HashSet(int initialCapacity, float loadFactor) 構(gòu)造一個(gè)新的空 set,其底層 HashMap 實(shí)例具有指定的初始容量和指定的加載因子。 35l boolean add(E e) 如果此 set 中尚未

15、包含指定元素,則添加指定元素。 使用add方法添加元素時(shí),先調(diào)用hashCode方法(任何對(duì)象都會(huì)從Object類繼續(xù)此方法)確定對(duì)象的散列碼,根據(jù)散列碼確定元素的存儲(chǔ)位置。36雙擊增雙擊增加斷點(diǎn)加斷點(diǎn)按按F11調(diào)試調(diào)試,或選擇或選擇”Run”菜單中的菜單中的”Debug”進(jìn)入調(diào)試視圖進(jìn)入調(diào)試視圖.37 aa和和bb的的ID都為都為18,說(shuō)明說(shuō)明aa和和bb都都指向同一個(gè)對(duì)象指向同一個(gè)對(duì)象.38aa:18bb:18棧棧 堆堆常量池常量池 18 abc39 hash為從為從Object繼承的繼承的hasCode()方法的方法的返回值返回值,稱為散列值稱為散列值.40 關(guān)于關(guān)于HashSet,可以

16、看到可以看到Size,表示包含元素的表示包含元素的個(gè)數(shù)為個(gè)數(shù)為1個(gè)個(gè).這個(gè)元素的這個(gè)元素的hashCode為為4,元素元素id為為28;41 int size() 返回此 set 中的元素的數(shù)量(set 的容量)。42 boolean isEmpty() 如果此 set 不包含任何元素,則返回 true。 43 boolean remove(Object o) 如果指定元素存在于此 set 中,則將其移除。 void clear() 從此 set 中移除所有元素。 44lP180 例7-26和7-27;45 HashSet a=new HashSet(); a.add(123); a.add(

17、123); System.out.println(a.size(); /?467.6.2 HashTablel存儲(chǔ)的鍵值對(duì).元素的鍵元素的值元素的鍵元素的值元素的鍵元素的值元素的鍵元素的值元素的鍵元素的值47構(gòu)造函數(shù): Hashtable() 用默認(rèn)的初始容量 (11) 和加載因子 (0.75) 構(gòu)造一個(gè)新的空哈希表。 Hashtable(int initialCapacity) 用指定初始容量和默認(rèn)的加載因子 (0.75) 構(gòu)造一個(gè)新的空哈希表。 方48方法: public V put(K key, V value)將指定 key 映射到此哈希表中的指定 value。鍵和值都不可以為 nul

18、l。 49 Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, bb); hashtb.put(3, cc); hashtb.put(4, dd); System.out.println(hashtb.size(); /4 /添加元素時(shí),會(huì)根據(jù)鍵生成散列值,確定元素存儲(chǔ)位置,所有鍵不要相同,但值可以相同;50 Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, aa); hashtb.put(3, aa); hashtb.p

19、ut(4, aa); System.out.println(hashtb.size(); /451 public V get(Object key)返回指定鍵所映射到的值,如果此映射不包含此鍵的映射,則返回 null. 52Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, aa); hashtb.put(3, aa); hashtb.put(4, aa); String a=(String)hashtb.get(2); System.out.println(a);53 boolean containsKey

20、(Object key) 測(cè)試指定對(duì)象是否為此哈希表中的鍵。 boolean containsValue(Object value) 如果此 Hashtable 將一個(gè)或多個(gè)鍵映射到此值,則返回 true。 54 Hashtable hashtb = new Hashtable(); hashtb.put(1, aa); hashtb.put(2, aa); System.out.println(hashtb.containsKey(1); System.out.println(hashtb.containsKey(5); System.out.println(hashtb.containsV

21、alue(aa);55l void clear() 將此哈希表清空,使其不包含任何鍵。l int size() 返回此哈希表中的鍵的數(shù)量。 56利用HashTable制作購(gòu)物車1、圖書(shū)類: BookInfo String id; String name; String author; float price; String press; 57 HashTable充當(dāng)購(gòu)物車,在其中存儲(chǔ)用戶要購(gòu)買的商品。(鍵為商品ID,值為商品數(shù)量) (1)用戶單擊購(gòu)買按鈕時(shí),首先查看購(gòu)物車是否存在,如果不存在則創(chuàng)建一個(gè)空的購(gòu)物車; (2)檢查購(gòu)物車中是否存在要購(gòu)買的商品,如果有則提示用戶,已經(jīng)夠買(或?qū)⑸唐窋?shù)量

22、加1),否則將商品加入購(gòu)物車,數(shù)量為1.587.7 迭代器public interface Iterator 用于對(duì) collection 進(jìn)行迭代的迭代器。59boolean hasNext() 如果仍有元素可以迭代,則返回 true。 E next() 返回迭代的下一個(gè)元素。 void remove() 從迭代器指向的 collection 中移除迭代器返回的最后一個(gè)元素(可選操作)。 60類 ArrayList所有已實(shí)現(xiàn)的接口: Serializable, Cloneable, Iterable, Collection, List, RandomAccess,其中有ArrayList的方

23、法:Iterator iterator() ; 返回列表上的一個(gè)迭代器.61List list = new ArrayList();list.add(one );list.add(second );list.add(third );list.add(new Integer(4);list.add(new Float(5.0F);list.add( second ); / true怎樣輸出列表中每一個(gè)元素?62通過(guò)迭代器來(lái)遍歷1、獲取列表上的迭代器: Iterator iterator=list.iterator();2、調(diào)用迭代器的方法(三個(gè))訪問(wèn)每一個(gè)元素: 判斷如果有下一個(gè)元素就訪問(wèn)下一個(gè)

24、元素: if(iterator.hasNext() Object object=iterator.next(); / . 63Iterator iterator=list.iterator();while(iterator.hasNext() object =iterator.next(); System.out.println(object.toString(); 64例子:l定義銀行賬戶類: class Cust String name,pwd; int ID,money; static int allNum=0;/總共包括的用戶數(shù)量。65l定義類CustDemo: 成員變量:ArrayList list,boolean logined=false; 構(gòu)造函數(shù):將list初始化; 方法:init(int num); 根據(jù)num的數(shù)量構(gòu)造num個(gè)Cust,從鍵盤輸入Cust的個(gè)人信息,將構(gòu)造的每個(gè)Cust加入list;66 Cust search(int ID);根據(jù)ID返回list中此ID對(duì)應(yīng)的Cust對(duì)象;void login();要求用戶先輸入用戶ID和密碼,如果正確將成員變量logined設(shè)置為true;(后面的方法要要求用戶先登錄才能調(diào)用相關(guān)方法); void changePWD(int ID ,String PWD);根據(jù)參數(shù)PWD 更改ID對(duì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論