[java]java基礎總結一

1.淺拷貝和深拷貝 
淺拷貝是指向用一個引用地址,是對象相等;深拷貝是指向兩個引用地址,是兩個對象不等
clone是Object類的方法,但使用clone方法是時要先實現Clonable接口
---------------------------------------------------------------------------
2.hashCode()和equals()
兩個元素的hashCode()相同,equals()不必定相同;
可是,兩個元素的equals()相同,hashCode()必定相同;
例子:
HashSet集合繼承了Set集合,具備元素不重複性的特色,假如HashSet集合已經有
1000個元素了,再插入第1001個元素時,用hashCode()方法來作比較,判斷元素
是否已存在HashSet集合集合中,能夠提升效率;而不是逐一元素作比較。
----------------------------------------------------------------------------
3.String中的問題:
String直接賦值時,會先去常量區找有無相同的字符串,有的話,就直接引用,無的
話,開闢新空間,而且駐留在常量區;
new的話,則直接開闢新的內存空間;
----------------------------------------------------------------------------
4.重載和重寫:
重載是不一樣類;重寫是父子類;
不能根據返回值類型來肯定是否重載:由於編譯器不知道要返回的是哪個方法。
----------------------------------------------------------------------------
5.+和StringBuilder中的append()的區別:
+操做其實是轉成append()操做;
在沒有循環的狀況下,+和append()操做性能差很少;
可是,當在循環中進行+操做時,會由於循環內每次都new StringBulider()對象,
來進行append()操做,因此+性能會下降。
不能+和append()混合用,性能低;
-------------------------------------------------------------------------------
6.實現對象克隆:
方法一:實現CloneAble接口,使用Object中的clone()方法,淺克隆(不推薦)
方法二:實現Serializable接口,利用序列化和反序列化來實現克隆,深克隆(推薦)
由於實現Serializable接口,能夠在編譯時利用泛型來檢查異常,早早地暴露問題。數據庫

---------------------------------------------------------------------------------
7.StringBuilder和StringBuffer的區別:
StringBuilder是線程不安全,但執行速度快;
StringBuffer是線程安全,但執行速度慢;
通常來講,推薦用StringBuilder,當須要線程安全時,可用用Collections工具類
的同步方法
-------------------------------------------------------------------------------
8.Collection下有哪些子類:
Collection下的子類主要有:
List:ArrayList(數組實現);LinkedList(隊列);vector(數組實現;線程安全)
Set:HashSet(無序,基於HashMap實現);LinkedHashSet(有序)
--------------------------------------------------------------------------------
9.數據庫索引:
索引的原理就是將無序的數據變成有序的排序,利用BTree來實現,能提升檢索
能力,但對增刪改的性能有影響。
--------------------------------------------------------------------------------數組

相關文章
相關標籤/搜索