本期是油墨山的開篇之作,那我們就按部就班的來說好了。油墨山的初衷,是為了能夠給初學java的小白以指引,希望能夠通過一天一天的文章積累,梳理java基礎知識脈絡,清晰規劃java學習路線。基礎是萬丈高樓的基石,基礎不牢,越往後學越是糊塗。也希望油墨山能一直陪伴朋友們成長下去。下麵,我們開始正題。 編 ...
本期是油墨山的開篇之作,那我們就按部就班的來說好了。油墨山的初衷,是為了能夠給初學java的小白以指引,希望能夠通過一天一天的文章積累,梳理java基礎知識脈絡,清晰規劃java學習路線。基礎是萬丈高樓的基石,基礎不牢,越往後學越是糊塗。也希望油墨山能一直陪伴朋友們成長下去。下麵,我們開始正題。
編程語言是一種人機交互的手段,編程語言是人所能夠看的懂得語言。而由編程語言所寫出來的代碼經由編譯器處理之後轉換成電腦能夠處理的語言。在編程語言轉換成機器語言這個過程中,又分為一步到位的和分兩步進行兩種方式,更專業一點的術語叫編譯型語言和解釋型語言。
前面一種方式拿C語言來說,經過編譯器處理之後,會生成一個可執行文件(以.exe結尾),直接滑鼠雙擊就可以運行程式,可以脫離語言環境。而解釋型語言無法生成獨立的可執行文件必須依賴於一個解釋程式才能執行。我們比較熟悉的解釋型語言是JavaScript,用在網頁技術中的一種腳本語言。
為什麼語言會分為編譯型和解釋型兩種不同的類型呢?那麼肯定是在長期的發展過程中由於不同的需求多導致的唄,多簡單是不是。
而我們的主角JAVA既是編譯型的語言,又是解釋型的語言。你編寫好的程式代碼在經過編譯之後會生成一個.class文件,即位元組碼文件。可不能忽視這個中間文件,你想既然可以編譯生成位元組碼文件,那有沒有辦法反編譯在生成程式代碼呢。或者獲得代碼的具體信息呢?此處是一伏筆,嗯劃重點。
對本文介紹來說,生成的這個位元組碼文件並不是誰都可以執行的,需要有具體的環境。那是啥呢?沒錯,Java虛擬機(JVM),JAVA語言之所以具有很好的可移植性,正是因為其生成的位元組碼文件是在Java虛擬機上執行的。不管是windows系統還是Linux系統,歸根到底是所使用了相應的JVM來處理。
當然了,介紹總免不了會介紹很多的高大上的看不見摸不著的概念,不清楚也沒有關係,因為這些概念的具體過程離我們還很遙遠。還不懂基本語法,看不懂代碼就要解析位元組碼,編寫虛擬機?肯定是不可能的。主要的是想告訴大家思考的重要性,理解代碼之後的邏輯。編程是面向現實生活的,解決的也是實際的問題,那麼怎麼解決的呢?為什麼寫幾行、幾百行代碼就可以把現實中一個很複雜的問題解決了?這些才是我們需要思考的東西。
怎麼解決呢?這麼解決。實際生活中有問題出現了,我想用編程來解決。比方說我要計算1+1,怎麼辦呢?拿C語言來說,編寫一個函數,函數有一個過程計算1+1然後返回結果。這叫面向過程,解決問題該有什麼樣具體的步驟。
而JAVA語言不是這樣的,它會怎麼做。JAVA是面向對象的,一切皆對象,萬物可抽象!我不直接計算1+1,我抽象,我抽象一個類,這個類有一種行為或者更貼切生活叫有一種能力,它能計算1+1。有了這樣一種類,那我是不是只要找來一個具體的實例就可以解決這個問題啦。這一段描述更多的是有點概念性的東西。但是在熟悉之後,我相信大家都會有那麼一種感覺,會感覺出二者的不同。更專業的解釋請查詢相關書籍。
JAVA具體的來說分為了JAVA SE、JAVA ME和JAVA EE。第一個就是我們接下來準備講的,基礎中的基礎,ME是用來做嵌入式設備的,JAVA EE是用來做企業開發的。先學好JAVA SE,再去學習JAVA EE。嗯,就是這樣。
學習編程是一件很辛苦的事,對於初學來說什麼也不懂,軟體怎麼下載也安裝不上去,怎麼點也運行不出結果,代碼編輯器上到處都是紅叉叉。但是請堅持下去,不要忽視基礎,不要眼高手低好高騖遠。看到很多炫酷的技術就想去學,基礎不打牢越學越痛苦。
除此之外有了一定的積累之後多去看看代碼,代碼是一種實現,裡面包含瞭解決問題的邏輯。Java是開源的,多有的源文檔都是可以找到的,但是不建議一上來就看,一是看不懂,二是浪費時間不知重點。多實現多敲代碼,以時間為墨,總會寫出我們的程式華章。
由於小編水平有限,如有不足,還請不吝賜教!!!此處也是重點,記下記下。微信搜索關註油墨山公眾號,獲取更多文章咨詢!!!