學習Java已經三年了,如今開始作Android開發,雖然說還在用Java語言但本人如今才真真的意識到不管學什麼基礎纔是最重要的,可能一些剛接觸Java或者Android的朋友如今還體會不到基礎的重要性,感受能作出實實在在的東西來纔是本身真真能力的集中體現。都說IT行業是一個要會學習的行業,由於這個行業的知識更新很快,也許就是這個緣由不少新人很重視新技術的使用方法缺每每忽視了基礎。我認爲做爲技術人員的咱們兩樣東西很重要,一個是興趣、二是會學習,如何才能作到這兩點呢?java
興趣不能說是一我的與生俱來的東西,興趣是能夠培養的,好比從本身寫的代碼中得到成就感。安全
會學習就是學會釣魚的方法,這樣學習效率會提升不少,計算機的世界裏面離不開0和1,一樣學程序的離不開最基本的課程,這些看似不重要的大學課程不是不重要,而是沒有遇到合適的機會,你的經驗還不足以領悟這些。在學習和開發Android的過程當中忽然想再系統回顧一下Java SE部分的知識,爲後面的道路打下堅實的基礎。多線程
1、萬事萬物皆對象架構
這句話當時在學習Java的時候聽起來有道理,當時沒有真真的領悟,如今感受總結的很是好,這一句話徹底闡述的面向對象的根本原理。工具
咱們從窗戶向外望去:學習
一、每棵樹:每一課樹均可以當作一個對象。開發工具
二、每一個人:每個人也能夠當作一個對象。spa
三、每一個人上班的事件: 能夠當作一個對象。操作系統
。。。。。。線程
類則是從某一部分對象中抽象出來的一個羣體,這些羣體具備某些共同的特徵,咱們能夠根據咱們所需的某幾個特徵抽象出咱們本身想要的類。
每一個人都是對象,咱們能夠抽象出來人的共同特徵,就像咱們給天然界的物質分類同樣(小學的天然課是咱們學習面向對象的第一堂課)。
每一個人上班的事件是對象,咱們能夠抽象出來上班,上班和上課就是兩個類。
2、面向對象的四個基本特徵
一、抽象:類是一個抽象的概念,也就是說類是不肯定的,是一個變化的概念,而不是一個實實在在的東西。咱們能夠將能夠跑的東西分紅一類,也能夠將既能夠跑又能夠飛的東西分紅另外一類。只要你頭腦裏面有一個分類的想法就能夠分紅一類,因此類是抽象的,可是對象是實實在在的哦。因此咱們在定義一個類的時候也能夠用接口和抽象類。
二、繼承:繼承其實就是一種組合關係,好比剛纔提到的,能跑、既能跑又能飛,這二者之間就有一種包含關係。
這種包含關係能夠分爲兩種,一種是is-a關係,好比學生is-a人,這種關係就須要用繼承 extends 。還有一種關係就是is-a-part(一部分),好比眼睛是臉的一部分,這種關係就要用組合關係,須要用眼睛做爲臉的屬性注入進去。
三、封裝:封裝是面向對象和麪向過程最大的不一樣,你只須要知道你想要的東西,無須知道具體內容和過程。好比你有一個手機須要充電,你此時只須要知道你的手機接口是什麼形狀(如usb),和電流參數便可無須知作別的,就能夠充電。封裝能夠提升對象的安全程度,不須要暴露的東西私有化,你就無權訪問。
四、多態:這個很容易理解,你能夠說小明是個學生也能夠說小明是我的。學生和人都是類,而且有繼承關係,因此說多態是基於繼承關係的。
3、Java語言的特色
一、簡單:這個對於只學過一種Java語言的朋友來講就無法說明了,由於沒有可比較的參照物,簡單和複雜也是一個相對的概念。
二、面向對象:java語言的代碼中只有類和配置文件(其實有的配置文件底層會轉化成對象,好比Android中的xml文件)。
三、跨平臺:不是Java跨平臺實際上是Java運行環境(Java虛擬機)跨平臺。
四、安全:主要有兩個方面,一個是Java不支持指針,二是Java中的對象都有面向對象的封裝特性。
五、多線程:Java處理多線程更加簡單和便捷。
4、Java運行環境
Java運行環境的架構如圖所示,就是咱們從官網上下載的JDK的安裝包安裝後的結構。
JVM:處於最底層,直接和咱們的操做系統打交道,是Java語言的運行環境,能夠將咱們編譯的.class文件翻譯成不一樣機器可以識別的機器碼。不一樣平臺都有所對應的JVM,因此說Java中惟獨JVM是不跨平臺的,正是由於JVM的這個特色才使Java語言具備跨平臺的特色。
Java SE API:實際上是一組提供給用戶操做的接口,開發Java語言其實就是操做這些接口。
JDK:開發工具,集成和封裝了開發和編譯Java源代碼的工具。
以上純屬我的的觀點,若是有問題或者更好的觀點請指出,歡迎分享我的的理解來交流和討論,共同進步。