《Java編程思想》這本書,陸陸續續讀了1年,終於基本都瀏覽了一遍。經過這本書,試圖理解做者的想法,才真的體會到Java思想。感謝本書的做者,不只講述了java的語法,更重要的是向讀者剖析了Java的設計思想,以及他本身對Java的理解。爲了加深對java知識點及思想的理解,也爲了讓這些思想成爲本身編程過程當中的習慣,經過整理筆記的方式來總結梳理本書重點內容,也但願經過個人整理幫助到其餘對Java有興趣的同窗。java
在讀本書以前,我是一個python程序員,python也具有OOP體系,但相較於Java,OOP體系確實不夠完整。固然,不一樣的語言,適用的場景不一樣,Python也有許多Java不具有的優雅特性。python
每種編程語言都是但願經過計算機編程來解決實際問題。程序經過對象來描述問題,經過實際事物的邏輯映射來表達。Java是面向對象的程序設計語言(OOP)的一種。程序員
面向對象的五種特性:編程
每一個對象存在的意義在於提供服務。每一個對象對外暴露接口,程序經過對象暴露的接口向對象發送消息,獲取該對象的服務能力。markdown
類是存儲成員與方法的結構,一種類便是一種數據類型。併發
對於類的建立者來講,經過組織類內部的結構實現某種服務。使用者經過使用該類的服務能力,建立屬於該類的對象,組織各類對象,來解決問題。 對於建立者來講,只但願向用戶暴露必要的接口,而隱藏實現細節。對使用者來講,也不會由於誤修改了不應修改的接口邏輯而致使程序的bug。Java經過三個關鍵字對類劃定了設定邊界:public、private、protected。編程語言
經過將一種類的對象做爲另外一種類的成員,實現代碼的複用。即要實現一種新的類,但該類的部分功能已被另外一個已存在的類實現。新類經過組合的方式,將已存在的類的功能包含進來,重複利用,減小代碼冗餘。spa
繼承是另外一種複用代碼的能力。繼承實現了類關聯關係的樹狀結構,根類,即基類(也成超類、父類),其餘繼承自基類的稱爲導出類。導出類具備基類的相同的行爲和特性,但可能還比基類多一些特性。經過這樣的繼承,實現了代碼複用。Java中的類的繼承能力爲單根繼承,即一個類只能繼承自一個類,而不能同時繼承自多個類。設計
能夠將一個對象賦值給他的基類對象。在調用基類對象的方法時,在運行時實現類型自動識別,實際調用的仍是原對象類型的方法。從而實現解耦。code
容器是一種可以持有其餘對象的對象。經過泛型,可使容器動態持有任意對象。
Java對象的生命週期關乎於對象的建立及Java的垃圾回收機制。Java對象的建立爲惰性建立,及使用時才建立;Java的垃圾回收的規則是:只有在不得不執行時才執行。可能不一樣的JVM實現上有差別。
異常處理,爲編寫程序階段提供了一種預見性的防止程序崩潰的出路。經過預先定義好異常處理過程,提升程序的容錯性。
通常但願經過併發來提升程序的運行速度,或是對CPU的利用最大化。對程序響應能力有較高要求的場景,或對於IO操做頻繁的程序考慮併發。當引入併發後,可能就要以不一樣的思惟方式來考慮代碼的設計,很重要的緣由是爲了解決共享資源衝突的問題。