1.運行時內(nèi)存即是堆內(nèi)存钥飞,對象在內(nèi)存中狀態(tài)有三種:活躍狀態(tài)百框,可恢復(fù)狀態(tài)琳要,待銷毀狀態(tài)寡具。
活躍狀態(tài):有引用變量引用對象。
可恢復(fù)狀態(tài):對象沒有引用變量引用稚补。當(dāng)垃圾回收調(diào)用finalize方法可以讓引用變量重新引用對象童叠,
待銷毀狀態(tài):對象所有引用變量的引用關(guān)系都斷開,且垃圾回收調(diào)用finalize方法 對象都不是活躍狀態(tài)课幕。
2.String StringBuffer StringBuilder
StringBuffer線程安全厦坛,StringBuilder線程不安全,StringBuilder性能高于StringBuffer
都實現(xiàn)了CharSequence接口
3.float double 精度丟失原因:
十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制是有誤差的不精確的乍惊。
float內(nèi)存存儲結(jié)構(gòu)
? ? ? ? ? ? 4bytes? ? ? 31? ? 30? ? 29----23? ? 22----0? ? ? ?
? ? ? ? ? ? 表示? ? ? 實數(shù)符號位? ? 指數(shù)符號位? ? ? ? 指數(shù)位? ? ? ? ? 有效數(shù)位
? ? ? ? 其中符號位1表示正杜秸,0表示負(fù)。有效位數(shù)位24位污桦,其中一位是實數(shù)符號位亩歹。
? 將一個float型轉(zhuǎn)化為內(nèi)存存儲格式的步驟為:
? ? ? (1)先將這個實數(shù)的絕對值化為二進(jìn)制格式,注意實數(shù)的整數(shù)部分和小數(shù)部分的二進(jìn)制方法在上面已經(jīng)探討過了凡橱。
(2)將這個二進(jìn)制格式實數(shù)的小數(shù)點左移或右移n位小作,直到小數(shù)點移動到第一個有效數(shù)字的右邊。
(3)從小數(shù)點右邊第一位開始數(shù)出二十三位數(shù)字放入第22到第0位稼钩。
(4)如果實數(shù)是正的顾稀,則在第31位放入“0”,否則放入“1”坝撑。
(5)如果n 是左移得到的静秆,說明指數(shù)是正的,第30位放入“1”巡李。如果n是右移得到的或n=0抚笔,則第30位放入“0”。
(6)如果n是左移得到的侨拦,則將n減去1后化為二進(jìn)制殊橙,并在左邊加“0”補(bǔ)足七位,放入第29到第23位。如果n是右移得到的或n=0膨蛮,則將n化為二進(jìn)制后在左邊加“0”補(bǔ)足七位叠纹,再各位求反,再放入第29到第23位敞葛。
舉例說明: 11.9的內(nèi)存存儲格式
? ? ? (1) 將11.9化為二進(jìn)制后大約是"1011.1110011001100110011001100..."誉察。
? ? ? (2) 將小數(shù)點左移三位到第一個有效位右側(cè):"1.01111100110011001100110"。保證有效位數(shù)24位惹谐,右側(cè)多余的截瘸制(誤差在這里產(chǎn)生了)。
? ? ? (3)這已經(jīng)有了二十四位有效數(shù)字氨肌,將最左邊一位“1”去掉综液,得到“01111100110011001100110”共23bit。將它放入float存儲結(jié)構(gòu)的第22到第0位儒飒。
? ? ? (4) 因為11.9是正數(shù),因此在第31位實數(shù)符號位放入“0”檩奠。
? ? ? (5) 由于我們把小數(shù)點左移桩了,因此在第30位指數(shù)符號位放入“1”。
? ? ? (6) 因為我們是把小數(shù)點左移3位埠戳,因此將3減去1得2井誉,化為二進(jìn)制,并補(bǔ)足7位得到0000010整胃,放入第29到第23位颗圣。
最后表示11.9為:01000001001111100110011001100110
4.set集合
hashset,LinkedHashSet,TreeSet,EnumSet (線程不安全)
HashSet:采用計算插入對象的hashcode值來計算儲存位置,插入和查詢性能比較好屁使。但是遍歷性能要弱一點在岂。插入順序不等于取出對象順序。
LinkedHashSet:額外采用一個鏈表來保存插入順序蛮寂。性能低于HashSet
TreeSet:底層實現(xiàn)是通過鏈表和紅黑樹來實現(xiàn)的排序蔽午。排序是比較實際值大小 而不是插入順序。
5.List集合
ArrayList,Vector,LinkedList
線程不安全:ArraryList 線程安全:Vector(棄用)
都是基于動態(tài)數(shù)組來實現(xiàn)的list酬蹋;
LinkedList也繼承了Deque接口 基于鏈表來實現(xiàn)保存元素及老。所以插入刪除性能較好
6:Queue集合
PriorityQueue,ArrayDeque
PriorityQueue是一個標(biāo)準(zhǔn)隊列不是絕對標(biāo)準(zhǔn)隊列。因為插入的元素不是按照插入順序先進(jìn)先出范抓。而是會重新表隊列中的值大小進(jìn)行排序骄恶。
ArrayDeque:基于數(shù)組實現(xiàn)的雙端隊列,既可以實現(xiàn)隊列也可以實現(xiàn)棧的處理匕垫。繼承于Deque接口
7.Map集合
HashMap僧鲁,HashTable,LinkedHashMap,TreeMap悔捶,WeekHashMap,IdentityHashMap
線性安全:HashTable 線性不安全:HashMap
HashMap允許key和value都是null值铃慷。
LinkedHashMap 鏈表保存插入的順序
重點復(fù)習(xí)泛型:*********************************************