# Tibame JAVA基本觀念整理: ## 基礎JAVA: 1. String/String Builder/String Buffer的差別: a. String/String Pool介紹在模組14(P.127):複習字串比對equals, ==的差別 b. String Builder/ String Buffer在模組27(P.386, 387) c. Thread-safe: String Buffer 2. Iterator是什麼: 模組14-3(P.324) 取得Collection內的元素,但不保證取得順序。 3. Collection有幾種: 講義P.318 ![](https://hackmd.io/_uploads/BysU9-z1s.png) 4. List, Set是什麼? 講義P.320 List有特定順序,可重複 Set無特定順序,不重複 5. Array和ArrayList差別: 1. Array: 模組12 2. Arraylist: 模組14 6. ArrayList和Linkedlist差別 模組20-1(P.351) ![](https://hackmd.io/_uploads/HJblTbMyi.png) 7. Vector是什麼 模組24-3(P.375) Vector等同於ArrayList, 但vector提供同步化優點(多執行緒存取)。 8. 如何用Iterator取ArrayList 模組17-1(P.337) ![](https://hackmd.io/_uploads/H1ENyQGys.png) 9. 如何用for-loop + index取ArrayList 10. 請敘述你知道的design-pattern 1. Singleton pattern 2. Hook 3. Factory pattern 4. Facade pattern 5. Strategy pattern(Java RPG) 6. Builder pattern(Lamda) 11. MVC model是什麼? a. Model2 OpenHomeCC(https://openhome.cc/Gossip/ServletJSP/Model2.html) ![](https://hackmd.io/_uploads/BkTFSGz1o.png) 12. 修飾子,解釋大小關係 ![](https://hackmd.io/_uploads/ryanLfGyj.png) a. 模組16(P.136) b. Public->Protected->default->private 講義P.191 14. this, super區別/繼承解釋 a. this關鍵字:講義P.150 b. 當前類別/父類別 c. 模組21(P.163) 14. 多型 Object就是最基本的多型。 參考模組11-3(P.111) 模組22(P.171) 模組23(P.175) 15. 介面 16. 可以多重繼承嗎? 17. 介面與抽象類別的差別 模組24(P.182) 模組25(P.184) 1. 避免濫用繼承 2. 定義規格用途 3. 介面宣告的方法為抽象方法 JAVA不能多重繼承而是用實作介面取代此功能。(C++可以多重繼承) 18. 抽象方法 沒有方法主體,加上abstract修飾子 19. Generic(泛型) 模組16(P.330) Object是最基本的多型,基本型別不能使用(int, float...) 利用\<?>增加彈性(ResponseEntity) 20. 兩種Exception(Uncheck, Check) 講義P.259 uncheck: 不必檢查的例外(runtime exception, sub-class) check: 一定要處理的例外(IOException, SQLException) 35. finally的重要性 finally一定會執行,可用在檔案讀取,資料庫連線等資源釋放。 **try with resources取代([try-with-resources](https://www.baeldung.com/java-try-with-resources))** 34. throw, throws 講義P.261 1. throws: 定義方法時將可能的例外丟出。 2. throw: 將方法內的例外手動丟出。 30. Overload 模組9-3(P.93) Java依據參數的數目以及不同的資料型別,自動呼叫對應的方法。 31. Override 模組21(P.163) 繼承父類別後重新改寫方法。static方法無法override 32. int/Integer 模組31(包裝類別) Auto-boxing/unboxing 33. 如何分辨是不是個物件(instance of) 講義P.176 36. Spring是什麼 DI, IOC, AOP...一言難盡 一定會被問爆。 37. Static是什麼 模組19(P.153) 1. static類別變數:由該類別的物件共享共用 2. static類別:在實體建構前,變數和方法就會先被載入。 3. static方法不可override 4. static方法內不可以存取該類別中非靜態的變數和方法,需要先new實體使用。 5. static區塊:在載入類別時會先執行一次。 38. Class A 可以再裝一個Class B 模組34:內部類別(P.412) 內部類別不用透過參數傳遞。 39. Lambda 模組37(P.424) ## 專題相關: 1. 專題如何定義Coding rules * 駝峰式/全小寫 * Class命名規則:參考JAVA SPEC方式: * Interface/Implement 2. 用什麼版本控制:Git-Hub