1.有必要知道什么是程序,什么是算法。你知道它是什么,便不會學(xué)得懵懵懂懂。學(xué)習(xí)Java編程跟學(xué)習(xí)其他編程語言一樣,都需要明白這是一種解決問題的語言表達(dá)形式。通過這種計(jì)算機(jī)語言描述出解決問題的方式方法,以便于在計(jì)算機(jī)上實(shí)現(xiàn)它。
就比如,你希望有一個可以計(jì)時的秒表,我就用編程語言設(shè)計(jì)一個秒表軟件實(shí)現(xiàn)你的需求。實(shí)現(xiàn)需求的過程就是用編程語言編寫程序的過程,解決這個需求的方法也叫算法,也就是解決問題的方法。算法是任何一個編程語言的核心。了解了這個,就已經(jīng)走上了學(xué)習(xí)編程的正路。
2.編程與生活息息相關(guān),兩者要始終保持密切聯(lián)系。
如何準(zhǔn)確理解程序呢?
舉個例子,我要去買飯。買到飯是我想要的結(jié)果,而解決這個問題的過程我們需要幾個步驟。就簡單的步驟來說:
第一步想要找到飯館,第二步挑選自己想要的飯菜,第三步付費(fèi)結(jié)賬。
這是簡單來說,如果具體到每個人的生活環(huán)境,解決這給問題的步驟還要多一些。
剛才那三個步驟是用文字表述的程序,也就是自然語言,這也是程序。程序是解決問題的方法步驟,解決買飯問題的步驟就是買飯的程序。
如果用計(jì)算機(jī)能理解的語言表述出來,那個程序變身為計(jì)算機(jī)語言程序。程序還有編程是并不復(fù)雜的概念,也沒有太高大上到你無法理解。再重復(fù)一遍,程序就是解決問題的方法步驟或者既定方式。編程就是將解決問題的方法步驟寫出來。
而計(jì)算機(jī)編程便是用計(jì)算機(jī)能理解的語言將其方法步驟寫出來??此凭幊淌歉叽笊?,冷抽傲的,其實(shí)它是很貼地氣的,處處與生活接軌。
3.編程語言有很多種,選擇Java是只選擇了其中一種表述和實(shí)現(xiàn)方式。
設(shè)定編程語言是因?yàn)橛?jì)算機(jī)是一個僵硬的東西,自然語言是它所不能理解的,故而需要設(shè)定一種它可以理解的語言,讓它聽懂你說的指令,它才能為你服務(wù)。理解了何為計(jì)算機(jī)程序和編程,下面就具體到不同種類的編程語言的選擇。
不同種類的編程語言就類似于現(xiàn)實(shí)中的各國家的語言,英語,法語,還有我們最熟悉的漢語,同樣的問題,會有不同形式的表現(xiàn)。漢語中描述自己是“我”,英語中是“I”,其他語言中又是另外的表述。不同的編程語言的區(qū)別也基本類似。不同語言的區(qū)別主要在于對于算法的表述方式不同,程序語言的適用范圍不同。因?yàn)楸硎龇绞胶瓦m用范圍的問題,諸多編程語言便可以區(qū)分開來,使用時也根據(jù)這兩點(diǎn)進(jìn)行選擇。
學(xué)習(xí)時有很多語言,如C、C++、Java,這三種編程語言是因?yàn)椴煌男枨蠖邪l(fā)的。Java與前兩者相比的優(yōu)勢在于可移植性強(qiáng),對于系統(tǒng)和硬件要求不高。了解了這個你就大體知道Java的特性了。其實(shí)只要有Java虛擬機(jī),它幾乎可以在任何機(jī)器上運(yùn)行。而c和c++是沒有這種特性的。也就是只需要安裝一個Java虛擬機(jī),電腦上可以運(yùn)行Java程序,手機(jī)上也可以,平板上也可以,對系統(tǒng)和硬件類型沒有硬性要求。
這種特性就是Java得以推廣的重要原因,它的適應(yīng)性太強(qiáng)了。說這些是讓大家對于Java有一定更深的理解。
Java和C語言有一定淵源,團(tuán)和C++是很像的,學(xué)過C和C++的再學(xué)習(xí)Java比較簡單一些,沒有這些學(xué)習(xí)經(jīng)歷也不用擔(dān)心,只需要足夠的練習(xí)量便可解決這一問題。
4.練習(xí)的頻率要遠(yuǎn)大于看知識點(diǎn)的頻率;面授為主,書本教材為輔,象一些零散的視頻可能會解決你的部分難點(diǎn)與困惑,但對系統(tǒng)學(xué)習(xí)是非常不利的,就如碎片化的會讓人走得越來越遠(yuǎn)。
多數(shù)人是選擇書本較多,書本攜帶方便,便于記錄重點(diǎn)和心得。其實(shí)就實(shí)效性而言,我倒是建議參加一些專業(yè)機(jī)構(gòu)的面授,如這個寒假百名同學(xué)選擇加入礪鋒眾創(chuàng)空間系統(tǒng)學(xué)習(xí)。有些同學(xué)會選擇書本或者學(xué)校的教育,這里有些小的弊端可以和大家分享一下:
首先,書本教材的操作可視化是個問題,就算有圖片輔助,也無法完全展現(xiàn)操作的全貌。
其次,教材的學(xué)術(shù)性太強(qiáng)。為了保證教材的知識質(zhì)量和高學(xué)術(shù)性,往往很多章節(jié)包含了太多資料和知識點(diǎn),學(xué)習(xí)這些章節(jié)時往往會被各種密集的要求和解析所弄暈。
就比如,教材中開篇對于編程發(fā)展的闡述,如果仔細(xì)去看會發(fā)現(xiàn)涉及到太多歷史事件,人物,公司等等……
再者,教材中的表述語言書面化太強(qiáng)。教材中缺乏大白話,一句話可以簡而言之的,往往為了追求準(zhǔn)確的定義而使用書面化的嚴(yán)謹(jǐn)?shù)膶W(xué)術(shù)語言,看著枯燥,學(xué)著也枯燥。
而視頻教程由于過于分散,對初學(xué)者非常不利。面授的過程非常好,效率也高,強(qiáng)調(diào)實(shí)踐,互動性強(qiáng)一些,教授過程多數(shù)是在編寫中進(jìn)行,很多進(jìn)行很多調(diào)節(jié)操作,并且團(tuán)隊(duì)合作。
當(dāng)然,書本教材和視頻中的內(nèi)容豐富作為一種知識補(bǔ)充是很好的,學(xué)的時候想要看更仔細(xì)的一些解釋就可以翻看教材和查一些視頻了。
教材選擇方面,國內(nèi)的用得較多的是清華大學(xué)出版社出版的《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,而國外的經(jīng)典教材《Java編程思想》,這個需要有一定學(xué)習(xí)經(jīng)歷之后才可以看,建議開始不要買這個教材學(xué)習(xí),而且里面有很多例子是以C,C++做實(shí)例比較的,沒有C類語言的學(xué)習(xí),估計(jì)也難以看懂。
關(guān)于編程語言的發(fā)展,只要了解一下就好,教材中的學(xué)術(shù)性總結(jié)有時太多,妨礙編程的學(xué)習(xí)。編程還是要從實(shí)踐性強(qiáng)的方面入手的。
具體不贅言了,源遠(yuǎn)流長的東西講太多實(shí)際上是舍本逐末,學(xué)到技能是根本。
5.在學(xué)習(xí)Java過程中還需要巧妙的理解方法和思維轉(zhuǎn)換。
比如“變量”這一概念的理解,就可以對應(yīng)成房間或者箱子,編程中聲明一個變量就是開一個房間,變量名是房間名,變量類型是房間類型,賦值給變量就是房間里住了一個人。由此你也可以知道,為什么叫變量呢,因?yàn)檫@個“房間”里可以反復(fù)進(jìn)出很多“人”。
很多人剛碰觸編程,對于編程那些一行行的字母感到恐懼,其實(shí)編程的模式再簡單不過,幾乎是固定的模式。
舉個簡單例子:
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.print("我想學(xué)Java!");
}
}
這個程序運(yùn)行后是輸出“我想學(xué)Java!”這句話。
開頭“publicclassTest{}”是一個Java程序的框架,相當(dāng)于蓋樓時的樓架子,素描時的輪廓,澆筑機(jī)械零件時的模具。
然后程序框架之內(nèi)的大括號里是更進(jìn)一步的內(nèi)容。
“publicstaticvoidmain(String[]args){}”這是這段程序的入口,類似于蓋樓房后的入口,素描后的第一筆細(xì)描等??傊强蚣苤螅O(shè)定的一個開始的位置。程序從這個地方開始。
程序入口大括號內(nèi)的內(nèi)容就是具體的指令和運(yùn)行內(nèi)容。
System.out.print("我想學(xué)Java!");
程序運(yùn)行后就會輸出內(nèi)容:我想學(xué)Java!
從這個Java程序就可以看出很多Java程序的共性,他們都會有Java程序框架,框架之內(nèi)都會有一個Java程序入口。這就是一個固定的模式,記住它,適當(dāng)?shù)睦斫饩涂梢粤?。巧妙的理解和思維轉(zhuǎn)換的關(guān)鍵也在于之前所說的和生活聯(lián)系,和你已有的經(jīng)驗(yàn)聯(lián)系起來。
因?yàn)槌绦虮揪褪菑纳疃鴣怼?/p>
6.保證練習(xí)頻率是形成技能的必要條件。學(xué)習(xí)的過程中,練習(xí)的量要大于你看教程的量。有時候一個知識點(diǎn)你要反復(fù)練習(xí)幾十遍上百遍,這樣才能有扎實(shí)的效果?;旧献詈蟮脑瓌t就是練習(xí)頻率要大于學(xué)知識學(xué)理論的頻率。
個人經(jīng)驗(yàn)起碼要達(dá)到幾十比一。如果不嫌枯燥可以變換形式練習(xí),看一章節(jié)練習(xí)一百次的頻率。
學(xué)習(xí)編程最后的效果是為了自己能夠獨(dú)立編程,進(jìn)入企業(yè)后可以解決相應(yīng)問題。如果你每個知識點(diǎn)僅僅是練習(xí)幾次,效果是你懂得它講了什么;通篇學(xué)下來你都是練了幾遍而已,也僅僅是你大體懂了什么,而不是會了什么。