2020-11-02多態(tài)

一、object包括:

  1. toString(類名+內存地址;默認返回類名

    有用,可見 ,有意義的東西

  2. equals;()

  3. hashCode;(把對象變成內存地址;最簡單的求余,返回內存地址)

31質數(shù),基本不重復;

二、多態(tài):需要繼承

父類引用指向子類對象;動態(tài)綁定,擴展性好;

抽象類:abstract(一種東西的定義,實現(xiàn)抽象方法)

如果全都是抽象方法

接口方法breathe:用@Override必須注釋一下)

接口必須只有抽象方法,權限修飾符不用加,或者public

implements:實現(xiàn)接口

默認public;

三、鏈表

1.鏈表與數(shù)組的主要區(qū)別

(1)數(shù)組的元素個數(shù)是固定的,而組成鏈表的結點個數(shù)可按需要增減;

(2)數(shù)組元素的存諸單元在數(shù)組定義時分配,鏈表結點的存儲單元在程序執(zhí)行時動態(tài)向系統(tǒng)申請:

(3)數(shù)組中的元素順序關系由元素在數(shù)組中的位置(即下標)確定,鏈表中的結點順序關系由結點所包含的指針來體現(xiàn)。

(4)對于不是固定長度的列表,用可能最大長度的數(shù)組來描述,會浪費許多內存空間。

(5)對于元素的插人、刪除操作非常頻繁的列表處理場合,用數(shù)組表示列表也是不適宜的。若用鏈表實現(xiàn),會使程序結構清晰,處理的方法也較為簡便。

例如在一個列表中間要插人一個新元素,如用數(shù)組表示列表,為完成插人工作,插人處之后的全部元素必須向后移動一個位置空出的位置用于存儲新元素。

對于在一個列表中刪除一個元素情況,為保持數(shù)組中元素相對位置連續(xù)遞增,刪除處之后的元素都得向前移一個位置。如用鏈表實現(xiàn)列表.鏈表結點的插人或刪除操作不再需要移動結點,只需改變相關的結點中的后繼結點指針的值即可,與結點的實際存儲位置無關。

2.數(shù)組的特點

  • 在內存中,數(shù)組是一塊連續(xù)的區(qū)域。
  • 數(shù)組需要預留空間,在使用前要先申請占內存的大小,可能會浪費內存空間。
  • 插入數(shù)據(jù)和刪除數(shù)據(jù)效率低,插入數(shù)據(jù)時,這個位置后面的數(shù)據(jù)在內存中都要向后移。
  • 隨機讀取效率很高。因為數(shù)組是連續(xù)的,知道每一個數(shù)據(jù)的內存地址,可以直接找到給地址的數(shù)據(jù)。
  • 并且不利于擴展,數(shù)組定義的空間不夠時要重新定義數(shù)組。

3.鏈表的特點

  • 在內存中可以存在任何地方,不要求連續(xù)。
  • 每一個數(shù)據(jù)都保存了下一個數(shù)據(jù)的內存地址,通過這個地址找到下一個數(shù)據(jù)。 第一個人知道第二個人的座位號,第二個人知道第三個人的座位號……
  • 增加數(shù)據(jù)和刪除數(shù)據(jù)很容易。 再來個人可以隨便坐,比如來了個人要做到第三個位置,那他只需要把自己的位置告訴第二個人,然后問第二個人拿到原來第三個人的位置就行了。其他人都不用動。
  • 查找數(shù)據(jù)時效率低,因為不具有隨機訪問性,所以訪問某個位置的數(shù)據(jù)都要從第一個數(shù)據(jù)開始訪問,然后根據(jù)第一個數(shù)據(jù)保存的下一個數(shù)據(jù)的地址找到第二個數(shù)據(jù),以此類推。 要找到第三個人,必須從第一個人開始問起。
  • 不指定大小,擴展方便。鏈表大小不用定義,數(shù)據(jù)隨意增刪。

4.數(shù)組和鏈表的優(yōu)缺點

數(shù)組的優(yōu)點

  • 隨機訪問性強
  • 查找速度快

數(shù)組的缺點

  • 插入和刪除效率低
  • 可能浪費內存
  • 內存空間要求高,必須有足夠的連續(xù)內存空間。
  • 數(shù)組大小固定,不能動態(tài)拓展

鏈表的優(yōu)點

  • 插入刪除速度快
  • 內存利用率高,不會浪費內存
  • 大小沒有固定,拓展很靈活。

鏈表的缺點

  • 不能隨機查找,必須從第一個開始遍歷,查找效率低

5.鏈表添加數(shù)據(jù):

 /**
     * 添加數(shù)據(jù)
     * @param data
     */
public void add(Integr data){
    //讓這個node變成頭
    Node newHead = new Node(data,next:null);
    讓新的有指向舊的頭
    newHead.setNext(head);
    讓心頭變成頭
    head = newHead;
}
  • NullPointerException:空值類型

6.泛型

泛型,即“參數(shù)化類型”。最熟悉的就是定義方法時有形參,然后調用此方法時傳遞實參。

顧名思義,就是將類型由原來的具體的類型參數(shù)化,類似于方法中的變量參數(shù),此時類型也定義成參數(shù)形式(可以稱之為類型形參),然后在使用/調用時傳入具體的類型(類型實參)。

泛型的本質是為了參數(shù)化類型(在不創(chuàng)建新的類型的情況下,通過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的數(shù)據(jù)類型被指定為一個參數(shù),這種參數(shù)類型可以用在類、接口和方法中,分別被稱為泛型類、泛型接口、泛型方法。

特性:

  • 泛型:泛型只在編譯階段有效。

泛型類

  • 泛型類型用于類的定義中,被稱為泛型類。
  • 通過泛型可以完成對一組類的操作對外開放相同的接口。
  • 最典型的就是各種容器類,如:List、Set、Map。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容