1. 程式人生 > >javase複習整理(一):基礎要點、重點、易錯點、多執行緒梳理總結

javase複習整理(一):基礎要點、重點、易錯點、多執行緒梳理總結

最近抽出時間從新回頭複習了一下javase基礎,把自己以前理解的不透徹和易錯的知識點重新梳理了一下,便於以後查閱。那麼接下來就開始複習總結!

一、java語言基礎

1、在java中,邏輯運算子“&&”與“&”都表示“邏輯與”,那麼他們的區別在哪裡呢?

當兩個表示式都為true時,邏輯與的結果才為true,使用邏輯運算子“&”會判斷兩個表示式;而邏輯運算子“&&”則是針對boolean型別進行判斷,當第一個表示式為false時則不會去判斷第二個表示式,直接輸出結果。使用“&&”可以節省計算機判斷的次數。通常將這種在邏輯表示式中從左端的表示式可以推斷出整個表示式的值稱為“短路”,而那種始終執行邏輯運算子兩邊的表示式稱為“非短路”。“&&”屬與“短路”運算子,而“&”則屬於“非短路”運算子。“||”和“|”也是如此。

2、String型別不是java的基本資料型別。

3、switch語句中表達式的值必須是byte,short,int,char,列舉型別,case 後所跟的常量值也必須是byte,short,int,char,列舉型別,java7以後允許String型別。同一個switch語句,case的常量值必須互不相同。

4、如果在程式中頻繁的附加字串,建議使用StringBuilder。StringBuilder比String更節省時間。

5、StringBuilder是一個可變的字串序列,提供一個與StringBuffer類相容的API,但並不保證與之同步。該類是Stringbuffer類的建議替換,在字串快取中被單個執行緒使用要比StringBuffer類快。但是StringBuilder的例項用於多個執行緒是不安全的,這時就要使用StringBuffer類來實現。

6、如果一個類的成員變數或成員方法被private修飾,則該成員變數只能在本類中使用,在子類中是不可見的,並且對其他包的類也是不可見的。

7、物件引用超過其作用範圍、物件被賦值為null時,物件會被java虛擬機器視為垃圾。

8、java語言建立的物件是儲存在堆中的,為了提高查詢的速度使用了雜湊查詢。

9、ArrayList實現了可變的陣列,,可以跟均索引位置對集合進行快速的隨機訪問。缺點是向指定的索引位置插入物件或刪除物件的速度較慢
10、LinkedList採用連結串列結構儲存物件。這種結構的優點是便於向集合中插入和刪除物件,經常需要向集合中插入、刪除物件時,使用LinkedList類實現的List集合的效率較高。
11、Set集合中的物件是無序的,遍歷Set集合的結果與插入Set集合的順序並不相同。
12、Map介面常用的實現類有HashMap和TreeMap。通常建議使用HashMap實現類實現Map集合,因為由HashMap類實現的Map集合對於新增和刪除對映關係效率更高。HashMap是基於雜湊表的Map介面的實現,HashMap通過雜湊碼對其內部的對映關係進行快速查詢;而TreeMap中的對映關係存在一定的順序,如果希望Map集合中的物件存在一定的順序,硬廣告使用TreeMap類實現Map集合。
13、由於TreeMap類實現的Map集合中的對映關係是根據鍵物件按照一定的順序排列的,因此不允許鍵物件是null。
14、異常類的使用原則:①不要過多的使用異常,這樣會增加系統的負擔 ②在方法中使用try...cathc語句塊捕獲異常時,要對異常作出處理。 ③try...catch語句塊的範圍不要太大,這樣不利於對異常的分析 ④一個方法被覆蓋時,覆蓋它的方法必須丟擲相同的異常或子異常
15、呼叫sleep()方法的執行緒不釋放鎖,但呼叫wait()方法的執行緒釋放鎖。
16、wait(time)方法指在此時間之內暫停,而wait()方法會使執行緒永久無限的等待下去,需要使用notify()或者notifyAll()方法喚醒。
17、wait()與notify()、notifyAll()方法只能在同步塊或同步方法中使用。