前段時間在抽工作之空余,更加系統(tǒng)和深入的重新學(xué)習(xí)Java的1些技術(shù)知識。
最近也試著申請了1個專欄,對前段時間的1些收獲和知識點做1個系統(tǒng)性的歸納回顧和總結(jié)。
昨天也是剛剛寫完了關(guān)于Java中的各種基礎(chǔ)語言要素的總結(jié),總覺得少了點甚么。
對基礎(chǔ)語言要素的理解和使用,實際上是很重要的。
俗語說,1切偉大的行動和思想,都源于1個微不足道的開始。
而對1門語言來講,熟練的掌握對其基礎(chǔ)語言要素的理解和使用,就是這個“微不足道的開始”
可以這樣說,1門語言的基礎(chǔ)語言要素,就同等因而1門武功的內(nèi)功。
將自己的“內(nèi)功”練到出神入化,剩下的,就只是招式(外功)而已了。
我在網(wǎng)上看到他人這樣解釋內(nèi)功與外功的區(qū)分,覺得用于表達我想說的話,10分契合:
內(nèi)功就像子彈,外功就像槍。
每一個人都會有子彈和槍,但問題是多少和優(yōu)劣。
內(nèi)功越強,子彈越多;外功越強,槍就越好。
其二者之間的關(guān)系就是,內(nèi)功是基礎(chǔ),決定外功建筑。
對應(yīng)于Java當(dāng)中來講則是:
基礎(chǔ)語言要素是根基;而我們所做的所謂的“編程”工作,實際就是通過根基創(chuàng)造使用招式而已。
回想最初學(xué)習(xí)Java時,1直沒能對這些基礎(chǔ)語言要素有足夠的重視,
也沒能對其有1個很系統(tǒng)性的分類歸納的理解,致使總覺得思路有點雜亂。
經(jīng)常在想,怎樣樣可以對這些語言要素的概念和使用方式,有1個更形象的理解。
后來在漸漸深入的進程中,發(fā)現(xiàn):
“編程”工作與我們在學(xué)生時期都經(jīng)歷的“作文”工作實際上是很相似的。
舉例來講:
而:
所以我們不難發(fā)現(xiàn),所謂的“作文題目”與“程序題目”。
歸納來說:實際上也就是1種“實現(xiàn)需求”罷了。
對2種不同的需求,我們所做的工作實際上都是“編寫文章”!不同的是,
1篇作文的構(gòu)成可能通常包括:
同理的,1個Java類的構(gòu)成通常包括:
我們將上面舉例說到的《我的父親》轉(zhuǎn)換為1個Java類的體現(xiàn)情勢,可能能讓我們更形象的進行理解:
該程序運行的輸出信息為:
記得小時候,有1次我發(fā)高燒!窗外下著大雨,也打不到車。萬分緊急之下,我的父親趕快拿出1件雨衣為我披上,背上我,冒著大雨把我從我家送到了醫(yī)院
請看了,我們不正是用Java語言寫了1篇“作文”嗎?
到此,我們通過以熟習(xí)的“作文”為切入點,了解了1個Java類的構(gòu)成結(jié)構(gòu)。
由此我們知道了:1個Java類的構(gòu)成實際其實不復(fù)雜,它的結(jié)構(gòu)通常就是類聲明、變量(常量)和方法(函數(shù))。
而所謂的1個“復(fù)雜的類”就猶如“1篇幾萬字的文章”的原理1樣,不過就是:
1、觸及到的人、物更多 = 定義的變量常量更多
2、段落更多/描寫的故事情節(jié)更多 = 定義的方法(函數(shù)更多)
而對應(yīng)的,以長篇小說為例。如果1篇文章的故事的字?jǐn)?shù)已到達了1定范圍,那末可能就會影響瀏覽性。這個時候,我們就能夠進1步的對其進行“分解”。
例如1本自傳體的長篇小說,1個人1生中可以描寫的情節(jié)有很多,那末它可能被搭建成以下結(jié)構(gòu):
有10篇用于描寫其青年時期業(yè)績的故事,我們將其提取出來放在1起,構(gòu)成小說的第1篇:《我的青年時期》
有10篇用于描寫其中年時期業(yè)績的故事,我們也將其提取出來,作為小說的第2篇:《我的中年時期》..
從而以此類推。終究這個結(jié)構(gòu)的總和被我們稱作“小說”。
Java中,也是1樣的。如果多個類綜合完成同1方面的功能實現(xiàn),
那末我們也能夠?qū)⑦@些類提取出來,構(gòu)成1個“篇章”,Java中的包結(jié)構(gòu)就是這個“篇章”。
而終究由多個包結(jié)構(gòu)組合起來的全部程序,就是所謂的1個完全的Java項目。
再壯觀的高樓大廈,究其根本也不過就是由眾多數(shù)量的鋼精水泥搭建起來的。
而建筑師能做的就是通過設(shè)計手段(招式)讓大樓的結(jié)構(gòu)更加穩(wěn)固,美觀和實用。
我們談到,之所以對1篇長篇小說進行這樣的結(jié)構(gòu)搭建。是由于當(dāng)文章字?jǐn)?shù)到達1定量的時候,就會影響瀏覽性,其主題也會模糊。
所以在Java中也是一樣的道理,這1定程度上也是“代碼重構(gòu)”的初衷之1。類應(yīng)當(dāng)具有足夠的功能特性化。
前面我們說到的是程序的結(jié)構(gòu),但同時我更想重點談到的是Java的基礎(chǔ)語言要素的使用。
但是在了解了程序的結(jié)構(gòu)以后,我們相對就更容易了解基礎(chǔ)語言要素的意義了。
一樣以作文為例,了解作文結(jié)構(gòu)是必要的。但我們還應(yīng)當(dāng)做的,就是以結(jié)構(gòu)為切入點,
繼續(xù)深入看1篇作文的基礎(chǔ)要素與基礎(chǔ)成份,也就是是:標(biāo)點符號,詞語,語句之類的東西。
由于即便你對作文結(jié)構(gòu)的研究再深,如果不會使用文字,不會使用標(biāo)點,不會書寫語句,那1切都是空談。
同理,假定我們要搭建1所房屋。需要了解房屋的結(jié)構(gòu)構(gòu)成要有臥室,廚房,浴室,客廳。
但僅僅是了解這樣的結(jié)構(gòu),或許足夠成為1名在紙上畫房屋結(jié)構(gòu)設(shè)計圖的設(shè)計師;但還不足以讓你真的搭建出1所房子。
要成功的搭建出房子,還需要了解房屋的構(gòu)建成份也就是材料,猶如水泥,鋼筋,1些建材等等。
那末對應(yīng)到Java中來講,其實也是1樣的道理。
而Java為我們提供的材料(基礎(chǔ)語言要素),包括:
標(biāo)示符、關(guān)鍵字、注釋、常量(變量)、運算符、表達式和程序語句。
到了這里我們再對前面說到的“類聲明、變量、方法”的Java類的結(jié)構(gòu)構(gòu)成,進行成份分析:
類聲明 = 訪問修飾符關(guān)鍵字 + 類聲明關(guān)鍵字 + 類名標(biāo)示符。
變量(常量) 的聲明 = 訪問修飾符關(guān)鍵字 + 數(shù)據(jù)類型(基本數(shù)據(jù)類型或?qū)ο髷?shù)據(jù)類型) + 賦值運算符 + 變量或常量的值
方法的聲明 = 訪問修飾符關(guān)鍵字 + 類/變量/方法修飾符關(guān)鍵字 + 返回類型關(guān)鍵字 + 方法名標(biāo)示符 + 方法參數(shù)列表(局部變量)
而方法的內(nèi)容通常就是通過對:運算符、表達式、程序語句(簡單語句和復(fù)合語句)組成“招式”,完成對數(shù)據(jù)(變量等)的操作。
由此我們簡單的總結(jié)1下,1個Java程序的編寫工作,實際通常就是:
根據(jù)“需求”,通過對Java基礎(chǔ)語言要素(示符、關(guān)鍵字、注釋、常量(變量)、運算符、表達式和程序語句)的使用,組成“招式”。
寫1篇結(jié)構(gòu)為:題目(類聲明) + 人、物、地點(變量/常量聲明) + 段落(方法/函數(shù))的“作文”。
上一篇 ubuntu12.04運維備忘
下一篇 正則表達式