學(xué)Java也有好一陣子了,當(dāng)涉及到Java的實(shí)際應(yīng)用時(shí)發(fā)現(xiàn)自己的基礎(chǔ)跟不上。基礎(chǔ)不行,概念不清,對(duì)以后的學(xué)習(xí)造成不小的負(fù)面影響。仔細(xì)分析后,自己總結(jié)了一些Java里面很基礎(chǔ)的東西,希望以后把基礎(chǔ)打好,高手就不必過目了呀,哈哈~~~

一、有關(guān)super跟this的區(qū)別。

區(qū)別

Super

This

范圍

由子類訪問父類的內(nèi)容

直接訪問本類中的內(nèi)容

訪問屬性

super.父類屬性,如果屬性沒有被覆寫,則也可以不寫super。

This.本類屬性。

訪問方法

super.父類方法(),如果方法沒有被覆寫,則可以不用加super也表示調(diào)用父類中的方法。

this.本類方法(),可以不寫this,也表示調(diào)用本類的方法。

訪問構(gòu)造方法

super是訪問父類中的構(gòu)造方法,必須放在首行。

this 是訪問本類中的其他構(gòu)造方法,必須放在首行。

 

二、重載和重寫的區(qū)別。

區(qū)別

重載

重寫/覆寫

單詞

Overloading

Override

概念

方法名稱相同,參數(shù)列表不同。

方法名稱相同,參數(shù)列表相同,方法的訪問權(quán)限不能更嚴(yán)格。

范圍

發(fā)生在一個(gè)類中。

發(fā)生在繼承關(guān)系中,由子類進(jìn)行覆寫。

三、Vector和ArrayList

   1.vector是線程同步的,所以它也是線程安全的,而arraylist是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用
       arraylist效率比較高。
   2.如果集合中的元素的數(shù)目大于目前集合數(shù)組的長度時(shí),vector增長率為目前數(shù)組長度的100%,而arraylist增長率為目前數(shù)組長度

      的50%.如過在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用vector有一定的優(yōu)勢。
    ArrayList 和Vector是采用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,都允許直接序號(hào)索引元素,
    但是插入數(shù)據(jù)要設(shè)計(jì)到數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全)所以性能上比ArrayList要差,
    LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行向前或向后遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入數(shù)度較快!

四、arraylist和linkedlist

     1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
     2.對(duì)于隨機(jī)訪問get和set,ArrayList覺對(duì)優(yōu)于LinkedList,因?yàn)長inkedList要移動(dòng)指針。
     3.對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢,因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。
       這一點(diǎn)要看實(shí)際情況的。若只對(duì)單條數(shù)據(jù)插入或刪除,ArrayList的速度反而優(yōu)于LinkedList。
       但若是批量隨機(jī)的插入刪除數(shù)據(jù),LinkedList的速度大大優(yōu)于ArrayList. 因?yàn)锳rrayList每插入一條數(shù)據(jù),要移動(dòng)插入點(diǎn)及之后的所有數(shù)據(jù)。

五、HashMap與TreeMap

       1、HashMap通過hashcode對(duì)其內(nèi)容進(jìn)行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個(gè)有序的結(jié)果你就應(yīng)該使用TreeMap(HashMap中元素的排列順序是不固定的)。

          HashMap中元素的排列順序是不固定的)。

       2、HashMap通過hashcode對(duì)其內(nèi)容進(jìn)行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個(gè)有序的結(jié)果你就應(yīng)該使用TreeMap(HashMap中元素的排列順序是不固定的)。集合框架”提供兩種常規(guī)的Map實(shí)現(xiàn):HashMap和TreeMap (TreeMap實(shí)現(xiàn)SortedMap接口)。

       3、在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會(huì)更好。使用HashMap要求添加的鍵類明確定義了hashCode()和 equals()的實(shí)現(xiàn)。  這個(gè)TreeMap沒有調(diào)優(yōu)選項(xiàng),因?yàn)樵摌淇偺幱谄胶鉅顟B(tài)。

六、hashtable與hashmap

     1.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)

     2.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的

     3.值:只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value

七、Set中的數(shù)據(jù)對(duì)象沒有順序且不可以重復(fù)。
      List中的數(shù)據(jù)對(duì)象有順序且可以重復(fù)。