如何系統(tǒng)有效的學(xué)習(xí)java編程
現(xiàn)在互聯(lián)網(wǎng)IT行業(yè)得以迅猛發(fā)展,已經(jīng)成為世界上最耀眼的行業(yè)。所以很多人也紛紛加入it行業(yè),那么如何系統(tǒng)有效的學(xué)習(xí)java編程?以下是學(xué)習(xí)啦小編分享給大家的有效學(xué)習(xí)java編程的方法,希望可以幫到你!
有效學(xué)習(xí)java編程的方法
第一步:JDK軟件開(kāi)發(fā)包時(shí)java軟件開(kāi)發(fā)環(huán)境,
包括jre運(yùn)行環(huán)境和jvm虛擬機(jī),在oricle官網(wǎng)下載javaSE版本JDK包;配置好環(huán)境變量就可以使用了。
第二步:java初級(jí)語(yǔ)法學(xué)習(xí),
1.基本數(shù)據(jù)類型整形,字符型,字節(jié)型,長(zhǎng)整形,短整形,浮點(diǎn)型,雙精度,布爾型;
2.運(yùn)算符+,-,*,/,%等;
3.控制流(while,switch,if else);
4.數(shù)組的定義方式。
此階段基本無(wú)難度,只要了解練習(xí)例題。
第三步:java面向?qū)ο髮W(xué)習(xí),
1.類和對(duì)象;
2.java語(yǔ)言三大特性,封裝、繼承、多態(tài);
3.一些關(guān)鍵字學(xué)習(xí)(static,final,abstract,extends)等。
這是重點(diǎn),大家根據(jù)知識(shí)點(diǎn)一步步研究學(xué)習(xí)才是關(guān)鍵。
第四步:java應(yīng)用編程,
例如:文件IO,集合(類似C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)),異常處理,線程,網(wǎng)絡(luò),JDBC數(shù)據(jù)庫(kù)操作等,都是掌握面向?qū)ο笠院螅诓檎也煌念愂褂妙愔胁煌姆椒ㄟ_(dá)到應(yīng)用的效果,所以并不會(huì)很難。等基礎(chǔ)語(yǔ)法掌握了就可以繼續(xù)后面框架學(xué)習(xí)(java web方向,android學(xué)習(xí)),相信明確思路你會(huì)豁然開(kāi)朗,更有學(xué)習(xí)動(dòng)力。
有效學(xué)習(xí)java編程的建議
1.return 一個(gè)空的集合,而不是 null
如果一個(gè)程序返回一個(gè)沒(méi)有任何值的集合,請(qǐng)確保一個(gè)空集合返回,而不是空元素。這樣你就不用去寫一大堆 ”if else” 判斷null元素。
Java 的標(biāo)準(zhǔn)庫(kù)設(shè)計(jì)者已經(jīng)在 Collections 類中放了一個(gè)空的 List 常量 EMPTY_LIST,除此之外,還有 EMPTY_MAP, EMPTY_SET,真是貼心。
2. 小心使用 String
因?yàn)樽址嗉踊蛘咂唇拥姆绞蕉紩?huì)在對(duì)象池中查找字符串是否存在,如果不存在則創(chuàng)建,這樣在拼接的過(guò)程中會(huì)產(chǎn)生大量中間過(guò)程的字符串,占用內(nèi)存資源。StringBuilder效率優(yōu)于StringBuffer,但是StringBuffer線程安全。
另外,在實(shí)例化一個(gè)字符串對(duì)象,構(gòu)造函數(shù)應(yīng)該避免發(fā)生直接實(shí)例化,例如:
3. 避免不必要的對(duì)象
一個(gè)最昂貴的操作(在內(nèi)存利用率)是java對(duì)象的創(chuàng)建。因此,建議只在必要時(shí)創(chuàng)建或初始化對(duì)象。下面的代碼給出了一個(gè)例子:
4.Array 和ArrayList 選擇
ArrayList和Array是我們?cè)趯?shí)際編程中經(jīng)常使用的容器,而且因?yàn)锳rrayList相當(dāng)于動(dòng)態(tài)化的數(shù)組,所以它們之間有太多的相似,以至于我們?cè)谶x擇哪種來(lái)存儲(chǔ)元素的時(shí)候,會(huì)有小小的迷惑,他們都有注解的優(yōu)缺點(diǎn),選擇真的取決于你的真實(shí)場(chǎng)景。
java程序員入門必須克服的5個(gè)障礙
1、不知道選擇哪種語(yǔ)言
很多人會(huì)問(wèn):“我應(yīng)該先學(xué)什么編程語(yǔ)言?”能有此一問(wèn),自然是因?yàn)槟忝靼壮绦騽澐值募?xì)致,但也說(shuō)明認(rèn)知也僅僅停留在這一層上。
如果你心中已經(jīng)有了一個(gè)既定的目標(biāo)或者說(shuō)是想要完成的項(xiàng)目,那么就可以依此做出選擇。
1.如果你想構(gòu)建iOS app,那么你需要學(xué)習(xí)Objective C或Swift。
2.如果你想構(gòu)建Android app,那么你需要學(xué)習(xí)Java。
3.如果你想構(gòu)建Web app,那么你需要學(xué)習(xí)JavaScript。
其實(shí)現(xiàn)在我們可以使用JavaScript來(lái)創(chuàng)建任何類型的項(xiàng)目——無(wú)論是簡(jiǎn)單的web和移動(dòng)app,還是高級(jí)的硬件項(xiàng)目。大多數(shù)行業(yè)中都有它的身影:音樂(lè)、醫(yī)療、游戲、時(shí)裝等等。
此種語(yǔ)言被淘汰的概率極低,且市場(chǎng)需求廣泛。如果你追求穩(wěn)妥,那么筆者建議你學(xué)習(xí)此種語(yǔ)言。
2、不知道如何學(xué)以致用
選擇好方向之后,剛開(kāi)始學(xué)習(xí)理論總是很輕松的,而且網(wǎng)上也有許許多多免費(fèi)和付費(fèi)的在線課程。
很多人都能較快的掌握理論知識(shí),甚至能夠做到自己來(lái)解釋某個(gè)代碼片段的工作原理。然而一旦實(shí)際應(yīng)用理論來(lái)解決問(wèn)題并編寫新代碼的時(shí)候,就會(huì)無(wú)力應(yīng)對(duì)。
導(dǎo)致這種情況出現(xiàn)的原因很簡(jiǎn)單:技能空白。
比如說(shuō)游泳。你可以閱讀大量的技術(shù)文章,然后解釋得就像一個(gè)專業(yè)教練。但是,要想實(shí)際應(yīng)用這些理論,就需要大量的實(shí)踐、斗爭(zhēng)和錯(cuò)誤——你肯定會(huì)吞下大量的水!
所以我們需要將理論結(jié)合大量的練習(xí),具體的方法步驟如下:
1.選擇一個(gè)復(fù)雜的項(xiàng)目。最好這項(xiàng)目得能夠激起你的興趣。
2.將這個(gè)任務(wù)分割成小而獨(dú)立的任務(wù)。例如,“實(shí)現(xiàn)登錄頁(yè)面”是一個(gè)很大的任務(wù)。但你可以將其分解為多個(gè)小任務(wù)。而關(guān)于一個(gè)小任務(wù)我們可以再次做個(gè)細(xì)分:不應(yīng)該超過(guò)20行左右的代碼。一次不使用太多的理論概念。一次專注一項(xiàng)任務(wù),而不是并行解決多任務(wù)。不要跳到下一個(gè)任務(wù),除非你已經(jīng)徹底測(cè)試過(guò)當(dāng)前任務(wù),并確信沒(méi)有問(wèn)題。
3.自己在開(kāi)始任務(wù)之前知道所有必要的理論知識(shí)。有時(shí)候,你可能不知道需要學(xué)習(xí)什么理論,這很正常,所以你需要向他人尋求幫助:程序員朋友,導(dǎo)師,或類似Dev Store的平臺(tái)。
4.你解決了任務(wù),獲得了經(jīng)驗(yàn)值。
3、不知道吸取教訓(xùn)
圓滿完成任務(wù)的感覺(jué)很好,但如果你完成任務(wù)后,直接開(kāi)展下一個(gè)任務(wù),那么你浪費(fèi)了一個(gè)絕佳的學(xué)習(xí)與成長(zhǎng)機(jī)會(huì)。
完成任務(wù)后,最好做一個(gè)完成的總結(jié)。例如問(wèn)問(wèn)自己以下的問(wèn)題:
1.哪些邊界情況會(huì)導(dǎo)致我的代碼失敗?即使現(xiàn)在還沒(méi)有失敗,有哪些應(yīng)用程序狀態(tài)可能會(huì)破壞代碼?
2.我的代碼是否足夠整潔?對(duì)其他開(kāi)發(fā)人員,甚至是自己而言,代碼是否易于理解和改變?因?yàn)橐院罂赡苄枰迯?fù)隱藏在這段代碼中的問(wèn)題,或者根據(jù)其他產(chǎn)品規(guī)格改變代碼。
3.我的方法是最好的嗎?有沒(méi)有其他選項(xiàng)是我可以選擇使用的?各個(gè)方案的利弊?這任務(wù)是否值得用不同的方式解決?
4.此模塊與其他模塊是如何交互的?是否會(huì)對(duì)其他模塊造成負(fù)面影響?是否容易被其他模塊影響?
4、不知道攻破難點(diǎn)
這里有兩種難點(diǎn)。
第一種,你不知道如何解決。
你不知道從哪里開(kāi)始?你可能會(huì)隨機(jī)地去嘗試,或者從其他地方復(fù)制一些你自己也不明白的代碼。但是,這是沒(méi)有幫助的。即使你復(fù)制來(lái)的代碼有效也沒(méi)用。因?yàn)楫?dāng)你今后再一次碰到類似的任務(wù),你依然不能解決。
如果你想妥善解決任務(wù),那么首先你得知道你為什么卡殼。下面是一些可能的原因:
沒(méi)有很好地掌握這些理論知識(shí):
語(yǔ)言語(yǔ)法:庫(kù)或API的工作原理,某個(gè)具體方法或類的工作原理。
編程范式(例如:異步編程):系統(tǒng)運(yùn)作(例如:HTTP請(qǐng)求是理解Web開(kāi)發(fā)的關(guān)鍵)。
如果是上述情況,那么可以去復(fù)習(xí)理論知識(shí),如果依然摸不著頭腦,也可以去找人尋求幫助。
任務(wù)太大了,那就分解為一個(gè)個(gè)小任務(wù)。
也有可能是因?yàn)槟阕x得太快,忽略了一些你以為熟悉其實(shí)似是而非的概念,所以無(wú)法理解任務(wù)要求。
第二種,你知道如何解決,但解決方法無(wú)效。
這是編程中最常見(jiàn)的情況,哪怕是那些經(jīng)驗(yàn)豐富的資深程序員也是如此。你的解決方案之所以不起作用最大的可能是你的代碼中存在著bug。
如何修復(fù)?方法是調(diào)試代碼。這也是作為一個(gè)程序員需要學(xué)習(xí)的最重要的技能之一。這不是可以隨便湊合的事,也不是玩幸運(yùn)猜猜猜游戲。如何尋找bug是有具體步驟的。而且很多書(shū)中都有教這個(gè)技能。
不幸的是,這是很多新手程序員失去動(dòng)力選擇放棄的難關(guān)。很少有課程會(huì)說(shuō)明調(diào)試的重要性。如果你不知道如何正確地調(diào)試,那么它就是不可戰(zhàn)勝無(wú)法攻克的難關(guān)。
很多人擔(dān)心會(huì)花太多時(shí)間用于調(diào)試代碼。這是正常的,在你第一年的編程規(guī)劃中這是不可避免的。
甚至,你還得學(xué)著去喜歡調(diào)試。不妨將此看成是一個(gè)機(jī)會(huì),一個(gè)修復(fù)錯(cuò)誤提高編程能力的機(jī)會(huì)。當(dāng)你解決了一個(gè)bug,可以問(wèn)問(wèn)自己這個(gè)問(wèn)題:“我為什么會(huì)犯這種錯(cuò)誤?以后我該如何預(yù)防再犯?”
還有一個(gè)好主意是將找到的bug寫成編程日記,方便你總結(jié)和學(xué)習(xí)。
5、不知道如何利用資源
當(dāng)你在學(xué)習(xí)代碼,或調(diào)試代碼時(shí),可以咨詢很多材料:書(shū)籍、課程、教程、導(dǎo)師,開(kāi)發(fā)者社區(qū)等等。
在你學(xué)習(xí)這些資源時(shí)最常見(jiàn)的問(wèn)題是,你并沒(méi)有完全了解幕后發(fā)生了什么事情,也不知道概念是如何融入到更大的藍(lán)圖中的。
簡(jiǎn)單的打個(gè)比方:你在某個(gè)問(wèn)題上花了10小時(shí),最后終于有人提供一個(gè)解決方案,你往往會(huì)在高興之余拿了就用,并不考慮太多。而這樣做的弊端不小,筆者建議你在解決問(wèn)題之后:
1.思考自己之前的思維過(guò)程。問(wèn)問(wèn)自己,做錯(cuò)了什么,對(duì)于這個(gè)特定的解決方案有哪些是值得你先前的思路借鑒和改進(jìn)的地方。
2.詢問(wèn)他人的思維過(guò)程。她/他是如何解決的呢?向?qū)Ψ綄W(xué)習(xí),吸取經(jīng)驗(yàn)。
猜你喜歡: