開發者學堂課程【5天玩轉Java 面向對象程式設計訓練營第四課時:複雜資料類型數組、隊列HashMap、泛型】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/349/detail/4084複雜資料類型數組、隊列HashMap、泛型
内容簡介
一、課程回顧
二、Java複雜資料結構
1、對象Object本意是是代表了某個東西,作為一個程式設計語言的話,為了更好的使用代碼去展現要處理的資料而引用了Object;
2、Class是作為歸類而産生的,把不同類型的代碼進行分類;
3、Class封裝:資料(變量)+行為(函數);
4.面向對象的三大特征:
①繼承:子類繼承父類的代碼
繼承性是子類自動共享父類資料結構和方法的機制,這是類之間的一種關系。在定義和實作一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的内容作為自己的内容,并加入若幹新的内容。
②封裝:Class+修飾符封裝代碼
即隐藏對象的屬性和實作細節,僅對外公開接口,控制在程式中屬性的讀和修改的通路級别;将抽象得到的資料和行為(或功能)相結合,形成一個有機的整體,也就是将資料與操作資料的源代碼進行有機的結合,形成“類”,其中資料和函數都是類的成員。在電子方面,封裝是指把矽片上的電路管腳,用導線接引到外部接頭處,以便與其它器件連接配接。
③多态:同一種行為,多種代碼實作
多态性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息可以産生不同的結果,這種現象稱為多态性。
5、繼承的意義:代碼重用;
6、多态的意義:同一種行為多種代碼實作;
7、多态的實作方式:
①接口多态:依賴實作接口來提供多态能力;
②繼承多态:依賴繼承來提供多态能力;
③抽象多态:依賴抽象類來提供多态能力
8、接口Interface是:接口是功能的集合,同樣可看作是一種特殊的資料類型,是比抽象類更為抽象的類,在Java程式設計語言中是一個抽象類型,是抽象方法的集合,接口通常以Interface來聲明,一個類通過繼承借口的方式,進而來繼承接口的抽象方法。
9、抽象類Abstract Class的本質是抽象方法隻能定義在抽象類中,抽象的方法和抽象的類必須由關鍵字abstract修飾,抽象類值隻定義方法聲明,不定義功能主題(即方法的實作),抽象類不可以被建立對象,抽象類隻有子類繼承了父類的方法,并且對其中的所有抽象方法進行了重寫,該子類才不是抽象類,隻要不是重寫當中的所有抽象方法,那麼這個子類還是抽象類。
1、數組Array:實體上記憶體空間連續,通路迅速快,不靈活;

數組的概念:數組Array代表的是一組數,一組連續的存儲空間,相同類型的元素,所謂數組,就是想通資料類型的元素按一定的序列排列的集合,就是把有限個類型相同的變量用一個名字命名,然後用編号區分它們的變量的集合,這個名字組成為數組名,編号成為下标,也叫索引(Index),數組是一種資料結構,它包含若幹相同類型的變量。
數組的特點:
數組Array記憶體空間連續,數組是可以一維、多元或交錯的,數值數組元素的預設值設定為零,而引用元素的預設值設定為null,交錯數組是數組的數組,是以其元素是引用類型并初始化為mull,數組的索引從0開始:具有n個元素的數組的索引是從0到null1,數組元素可以是任何類型,包括數組類型,C#7.0元組不限制數組元素類型,數組元素類型是各種類型,數組通路效率高,但是删除和插入效率低。
2、連結清單List:實體上不連續,插入,删除靈活;
數組連續的記憶體存儲區
數組連結清單:Array數組:一組連續的實體空間,一組元素,不可變長度,查找性能高,但是插入和删除需要移動位置,性能低;
List連結清單:空間節點指針連接配接,鍊條節點,可變長度,插入和删除節點性能高,但是查找性能較低;
ArrayList:可變長度的數組。
List連結清單:
雙鍊連結清單的好處是可以雙向查找,但是雙向連結清單需要的空間較大。
舉例:List練習
1.建立了一個對象,List,存儲整數元素
2.求和 周遊清單
3、枚舉(Enumeration);
4、集合(Set);
5、向量(Vector);
6、棧(Stack):先進後出;
7、字典(Dictionary);
8、哈希表(Hashtable);
8.1哈希的繼承關系:Map的繼承關系
8.2HashMap,存儲
8.2.1.HashMap哈希映射:存儲值對(Key/Value)資料
8.2.2.類型定義Java.util.HashMap,V>
8.2.3.public class HashMapV>
8.2.4.extends AbstractMapV>
8.2.5.implements Map,Cloneable,Serializable
8.2.6.繼承了抽象類AbstractMap
8.2.7.基于哈希表的Map接口的實作,并允許null值和null鍵
8.2.8.提供了get()和put()方法
8.2.9.HashMap是無序的,即不會記錄插入的順序
8.2.10.HashMap與Hashtable基本一樣,但是不同步,允許為null。
8.3HashMap例子
8.3.1定義使用者類型
8.3.2.Hash哈希,映射,鍵值對
8.3.3.根據手機号,查詢QQ、微信、釘釘、支付寶、淘寶使用者資訊。User類型
8.3.4.手機号查詢賬戶資訊
8.3.5.調用重寫方法列印字元串
9、隊列(Queue);
10、樹(Tree)。
Java作為一個程式設計語言,已經提供了系統預定義的類型,這些類型幫助快速的去書寫代碼,本質上就是代碼重用。
舉例:
1.定義數組 長度5,整數類型的數組
2.求數組中所有元素的和
3.字元串數組