)運作時異常,非運作時異常。
運作時異常可進行處理,也可不進行處理。非運作時異常必須進行處理(可以通過try-catch語句處理,也可通過關鍵字throws抛出異常)。非運作時異常繼承自Exception但不繼承自RuntimeException。
2)equals()方法與“==”的差別
(1)對于字元串變量以及基本資料類型的包裝類型來說:“==”比較兩變量的引用是否相等,即變量在記憶體的首位址是否相等。“equals()”比較實體(記憶體空間)的内容是否相等,因為String類中重新定義了equals()方法,并且是用來比較其值得而不是記憶體位址。注意:如果 StringBuffer s1=new StringBuffer(“a”); StringBuffer s2=new StringBuffer(“a”); s1.equals(s2);為false,因為StringBuffer類中沒有重新定義的equals()方法,是以equals()方法來自于Object類,而Object類的equals()方法是用來比較位址的,是以為false。
(2)對于非字元串變量來說:“==”和“equals()”的作用是相同的,都是用來比較對象在堆記憶體中的首位址,即用來比較兩個引用變量是否指向同一個實體(記憶體空間)。注意:(1)如果是基本資料類型比較隻能用“==”不能用“equals()”。(2)對于基本資料類型的包裝類型“==”比較的是實體的引用,“equals()”比較的是實體的内容。
3)是否可以繼承String類?
String類是final類故不可以繼承。
4)構造器Constructor是否可被override?
構造器Constructor不能被繼承,是以不能被override(重寫),但可以被overload(重載)。
5)HashMap和Hashtable的差別。
1.HashMap是Hashtable的輕量級實作,效率更高。
2.Hashtable是線程安全的,HashMap是非線程安全的,即前者中的方法有用synchronized修飾,後者沒有。
3.HashMap允許空(null)鍵值(key),而Hashtable不允許。
4.Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實作。
5.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
6)GC是什麼? 為什麼要有GC?
GC是垃圾收集的意思(Garbage Collection),(記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導緻程式或系統的不穩定甚至崩潰)Java提供的GC功能可以 自動監測對象是否超過作用域進而達到自動回收記憶體的目的,避免記憶體溢出造成的一系列問題。Java語言沒有提供釋放已配置設定記憶體的顯示操作方法。
7)同步和異步有何異同,在什麼情況下分别使用他們?舉例說明。
(1)同步(synchronized)和異步(asynchronized)是對于多線程(multi-threading)而言的
同步可防止并發 主要出于資料安全的考慮。對于線程中的共享資料,必須進行同步存取。
(2)異步允許并發。當應用程式在對象上調用了一個需要花費很長時間來執行的方法,并且不希望讓程式等待方法的傳回時,就應該使用異步程式設計。
建立了幾個String Object ?
兩個,堆區中一個,常量池中一個。
String a="xyz"; 首先會到常量池中去查找,如果存在就不再配置設定,如果不存在就配置設定,常量池中的資料
是在編譯期指派的,也就是生成class檔案時就把它放到常量池裡了。
9)簡述synchronized和java.util.concurrent.locks.Lock的異同 ?
主要相同點:Lock能完成synchronized所實作的所有功能
主要不同點:Lock有比synchronized更精确的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程式員手工釋放,并且必須在finally從句中釋放。
想要學習Java開發的同學,可以參考千鋒成都Java教育訓練班提供的學習大綱;
10)多線程有幾種實作方法,都是什麼? 同步有幾種實作方法,都是什麼?
多線程有兩種實作方法,分别是繼承Thread類與實作Runnable接口。
實作同步也有兩種,分别為使用同步方法和使用同步塊。同步方法就是在方法傳回類型後面加上synchronized,如:public void synchronized add(){},同步塊就是直接寫:synchronized(需要同步的對象){}
11)switch是否能作用在byte上? 是否能作用在long上? 是否能作用在String上?
switch(expr1)中,expr1是一個整數表達式。是以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long, String 都不能作用于swtich.