學Java也有好一陣子了,當涉及到Java的實際應用時發(fā)現(xiàn)自己的基礎跟不上。基礎不行,概念不清,對以后的學習造成不小的負面影響。仔細分析后,自己總結了一些Java里面很基礎的東西,希望以后把基礎打好,高手就不必過目了呀,哈哈~~~
一、有關super跟this的區(qū)別。
區(qū)別 | Super | This |
范圍 | 由子類訪問父類的內(nèi)容 | 直接訪問本類中的內(nèi)容 |
訪問屬性 | super.父類屬性,如果屬性沒有被覆寫,則也可以不寫super。 | This.本類屬性。 |
訪問方法 | super.父類方法(),如果方法沒有被覆寫,則可以不用加super也表示調(diào)用父類中的方法。 | this.本類方法(),可以不寫this,也表示調(diào)用本類的方法。 |
訪問構造方法 | super是訪問父類中的構造方法,必須放在首行。 | this 是訪問本類中的其他構造方法,必須放在首行。 |
二、重載和重寫的區(qū)別。
區(qū)別 | 重載 | 重寫/覆寫 |
單詞 | Overloading | Override |
概念 | 方法名稱相同,參數(shù)列表不同。 | 方法名稱相同,參數(shù)列表相同,方法的訪問權限不能更嚴格。 |
范圍 | 發(fā)生在一個類中。 | 發(fā)生在繼承關系中,由子類進行覆寫。 |
三、Vector和ArrayList
1.vector是線程同步的,所以它也是線程安全的,而arraylist是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用
arraylist效率比較高。
2.如果集合中的元素的數(shù)目大于目前集合數(shù)組的長度時,vector增長率為目前數(shù)組長度的100%,而arraylist增長率為目前數(shù)組長度
的50%.如過在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用vector有一定的優(yōu)勢。
ArrayList 和Vector是采用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,都允許直接序號索引元素,
但是插入數(shù)據(jù)要設計到數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全)所以性能上比ArrayList要差,
LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行向前或向后遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入數(shù)度較快!
四、arraylist和linkedlist
1.ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結構,LinkedList基于鏈表的數(shù)據(jù)結構。
2.對于隨機訪問get和set,ArrayList覺對優(yōu)于LinkedList,因為LinkedList要移動指針。
3.對于新增和刪除操作add和remove,LinedList比較占優(yōu)勢,因為ArrayList要移動數(shù)據(jù)。
這一點要看實際情況的。若只對單條數(shù)據(jù)插入或刪除,ArrayList的速度反而優(yōu)于LinkedList。
但若是批量隨機的插入刪除數(shù)據(jù),LinkedList的速度大大優(yōu)于ArrayList. 因為ArrayList每插入一條數(shù)據(jù),要移動插入點及之后的所有數(shù)據(jù)。
五、HashMap與TreeMap
1、HashMap通過hashcode對其內(nèi)容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。
HashMap中元素的排列順序是不固定的)。
2、HashMap通過hashcode對其內(nèi)容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。集合框架”提供兩種常規(guī)的Map實現(xiàn):HashMap和TreeMap (TreeMap實現(xiàn)SortedMap接口)。
3、在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。使用HashMap要求添加的鍵類明確定義了hashCode()和 equals()的實現(xiàn)。 這個TreeMap沒有調(diào)優(yōu)選項,因為該樹總處于平衡狀態(tài)。
六、hashtable與hashmap
1.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現(xiàn)
2.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
3.值:只有HashMap可以讓你將空值作為一個表的條目的key或value
七、Set中的數(shù)據(jù)對象沒有順序且不可以重復。
List中的數(shù)據(jù)對象有順序且可以重復。