java學(xué)習(xí)心得四篇_第1頁(yè)
java學(xué)習(xí)心得四篇_第2頁(yè)
java學(xué)習(xí)心得四篇_第3頁(yè)
java學(xué)習(xí)心得四篇_第4頁(yè)
java學(xué)習(xí)心得四篇_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

java學(xué)習(xí)心得java學(xué)習(xí)心得「篇一」關(guān)于Java容器類學(xué)習(xí)心得體會(huì)1.接口整個(gè)Java容器類的基礎(chǔ)是容器接口(例如Collection,Map等接口),而不是類。使用接口的最大好處在于將容器的實(shí)現(xiàn)與容器的接口分開,這就意味著你可以使用相同的方法訪問容器而不用關(guān)心容器是由什么樣的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的。同樣,Iterator接口也使得用戶可以使用相同的方法訪問不同的容器類。以上這些是通用算法的基礎(chǔ)。China1.1Collection接口Collection接口有如下基本方法:booleanadd(Objectobj):如果添加對(duì)象后,集合確實(shí)發(fā)生了變化,則返回true;否則返回falseIteratoriterator:返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象此外,還有intsizebooleanisEmpty,booleancontains(Objectobj),voidclear等許多有用的方法1.2Map接口Map用于存放關(guān)鍵字/值對(duì)。有如下基本方法:Objectget(Objectkey)Objectput(Objectkey,Objectbalue)SetkeySetSetentrySet此外,還有其他有用的方法。需要注意的是,從表面看它似乎就是一種由鍵值對(duì)構(gòu)成的集合,但實(shí)際上并不是這樣。不過另一方面假如將Map的某一部分看作集合,有時(shí)候也還是顯得非常方便的。換言之你可以創(chuàng)建一個(gè)集合用它來表達(dá)Map的那一部分。綜上所述,一個(gè)Map可以返回的東西包括它的鍵值構(gòu)成的一個(gè)Set、由它的值構(gòu)成的一個(gè)集合或者由它的鍵值對(duì)構(gòu)成的一個(gè)Set。1.3Iterator接口Iterator接口有下面3個(gè)基本方法:Objectnext:返回迭代器剛越過的元素的引用booleanhasNext:判斷容器內(nèi)是否還有可供訪問的元素voidremove:刪除迭代器剛越過的元素注意:Java中的迭代器與STL中的迭代器在概念上有很重要的區(qū)別。在STL中,迭代器類似于數(shù)組的索引,使用這種迭代器可以查看存放在該位置上的元素(類似于通過數(shù)組索引i來訪問c[i]一樣)。Java中的迭代器并不這樣運(yùn)行。查看與位置的變化緊密的結(jié)合在一起。每次通過next訪問一個(gè)元素的同時(shí),迭代器的位置會(huì)自動(dòng)向前走一步。這個(gè)問題可以這樣理解:Java中的迭代器指向的位置并不是元素,而是元素之間。這樣,每次調(diào)用next時(shí),迭代器便越過下一個(gè)元素,同時(shí)返回它剛越過的那個(gè)元素的引用。根據(jù)上面的說明,很容易得出下面的代碼是錯(cuò)誤的:it.removeit.remove而下面的代碼是正確的:it.removeit.nextit.remove迭代器的典型應(yīng)用Iteratorit=c.iteratorwhile(it.hasNext){Objectobj=it.next//dosomethingwithobj}1.4子接口1.4.1List接口List從Collection接口中分立出來是因?yàn)長(zhǎng)ist的特點(diǎn)――有序的集合。這里指的有序并不是按照大小排好序的(Sorted),而是指集合是可以以確定的順序訪問的序列。針對(duì)List的這個(gè)特點(diǎn),它比Collection接口增加了通過索引進(jìn)行操作的方法。例如,add、remove、get、set等方法的參數(shù)表中都可以加入索引的數(shù)值,從而操作處在索引位置處的元素。1.4.2Set接口Set與List的不同,它里面的元素是無序的;所以,不能通過任何索引的方法來操作Set對(duì)象ChinaItPower.ComZKWED1.4.3ListIterator接口使用與List的迭代器,比Iterator接口增加了一些方法(例如add等)。此外,由于List是雙向表,所以還增加了Objectprevious和booleanhasPrevious方法,用法與next和hasNext一樣。ChinaItPower.ComZKWED1.4.4SortedMap接口包含如下基本方法:ComparatorcomparatorObjectfirstKeyObjectlastKeyChinaItPower.ComZKWED2.抽象容器類2.1抽象容器類包括AbstractCollection,AbstractList,AbstractSet等等ChinaItPower.ComZKWED2.2為什么要有抽象結(jié)合類?例如Collection接口中定義了許多有用的方法,如果實(shí)現(xiàn)Collection接口的每個(gè)類都自行實(shí)現(xiàn)這么多的方法,那將是非常麻煩的。為了使實(shí)現(xiàn)Collection接口的類的實(shí)現(xiàn)更容易,AbstractCollection類讓一些基本方法(比如add和iterator)變成了抽象的方法,而利用這些基本方法的其他方法(例如addAll等等)則具體實(shí)現(xiàn)了。ChinaItPower.ComZKWED3.具體的容器3.1ArrayList與LinkedList都是實(shí)現(xiàn)了List接口的類,是有序集。List接口支持通過索引的方法來訪問元素,對(duì)于這一點(diǎn),ArrayList沒有任何問題;但是對(duì)于LinkedList則有很大的問題,鏈表本身不應(yīng)該支持隨機(jī)存儲(chǔ),但是作為L(zhǎng)ist的一個(gè)實(shí)現(xiàn),鏈表也提供了對(duì)隨機(jī)訪問的支持,但是效率很低。每次通過索引的方法都是進(jìn)行一次遍歷。我認(rèn)為,其實(shí)就不應(yīng)該讓鏈表支持隨機(jī)訪問;而Java這樣實(shí)現(xiàn)我想是因?yàn)檎麄€(gè)集合框架的體系,使得鏈表與數(shù)組可以使用同樣的方法使用。綜上所述,對(duì)于LinkedList最好不使用隨機(jī)訪問,而使用迭代器。ChinaItPower.ComZKWED3.2TreeSet3.2.1TreeSet是SortedSet的一個(gè)實(shí)現(xiàn)。根據(jù)數(shù)據(jù)結(jié)構(gòu)的知識(shí)可以知道,樹的效率非常高,而且Java標(biāo)準(zhǔn)庫(kù)中有TreeSet這樣的類,以后應(yīng)該盡量使用TreeSet來提高程序的效率。3.2.2需要注意的是:TreeSet作為有序集,它通過compareTo或者Comparator來將集合元素排序。任何具有相同比較值的元素(無論它們是否equals),在TreeSet中都作為同一個(gè)元素,從而不能有重復(fù)。這樣以來,即使是不同的對(duì)象也不能加入到集合中,這一點(diǎn)有時(shí)候很不方便。我在編寫A*算法時(shí),不同狀態(tài)有時(shí)候?qū)?yīng)著同一個(gè)啟發(fā)函數(shù)值,那么這些不同的狀態(tài)就無法加入到TreeSet中。ChinaItPower.ComZKWED3.3HashSet3.3.1HashSet是非常高效的數(shù)據(jù)結(jié)構(gòu),與TreeSet不同,HashSet是比較對(duì)象的equals方法來區(qū)分不同的對(duì)象。這樣只有真正不同的對(duì)象才能不被重復(fù)的加入到集合中。3.3.2需要注意的是:HashSet效率非常高,但是對(duì)象的hashCode函數(shù)不好確定。一般默認(rèn)的對(duì)象的hashCode函數(shù)是根據(jù)對(duì)象的內(nèi)存地址得到的。好的hashCode函數(shù)是HashSet成功運(yùn)用的關(guān)鍵。ChinaItPower.ComZKWED4.視圖4.1什么是視圖?對(duì)映象類使用keySet方法,仿佛該方法建立了一個(gè)新的集合,并將影響的所有關(guān)鍵字都填入這個(gè)集合。實(shí)際情況并非如此,對(duì)這個(gè)集合的任何操作都將反映到原始的映象對(duì)象上。實(shí)際上,keySet返回的是一個(gè)實(shí)現(xiàn)Set接口的對(duì)象,對(duì)該對(duì)象的操作就是對(duì)映象的操作。這樣的集合成為視圖。4.2視圖的應(yīng)用4.2.1將現(xiàn)有的容器變?yōu)榫€程安全的容器:使用Collections.synchronizedCollection(Collectionc)方法,在SDK文檔中該方法的解釋是“Returnsasynchronized(thread-safe)collectionbackedbythespecifiedcollection”。4.2.2將現(xiàn)有的容器變?yōu)橹蛔x的容器:使用Collections.unmodifiableCollection(Collectionc)方法,在SDK文檔中該方法的解釋是“Returnsanunmodifiableviewofthespecifiedcollection.”。4.2.3子范圍4.2.4Arrays類中的asList方法ChinaItPower.ComZKWED5.通用算法通用的集合接口帶來的一大好處就是可以編寫通用算法。可以使用Collections中的靜態(tài)通用方法,也可以編寫自己的通用方法。(具體的算法的內(nèi)容在此略去)ChinaItPower.ComZKWED總結(jié):千萬記住這句話――沒有最好的容器(數(shù)據(jù)結(jié)構(gòu)),要根據(jù)不同的問題選擇不同的容器,以此來達(dá)到功能的要求和效率的最優(yōu)。java學(xué)習(xí)心得「篇二」對(duì)于很多只會(huì)C語(yǔ)言的初學(xué)者而言,面對(duì)java基礎(chǔ)語(yǔ)法學(xué)習(xí),反而感覺很難,其實(shí)其中最大的問題不是語(yǔ)法難,而是一種編程思想的轉(zhuǎn)變。面向過程就是把你的代碼封裝成函數(shù),然后依次去做一件事情,面向過程是把你要做的事情抽象成對(duì)象,告訴對(duì)象去做。所以要想學(xué)好java入門,必須知道類和對(duì)象的概念。類是對(duì)生活中事物的抽象描述,比如人類,動(dòng)物類,交通工具類;對(duì)象即是對(duì)類的具體實(shí)例化,比如張三是人,貓是動(dòng)物,飛機(jī)是交通工具(對(duì)象-----類)。Java基礎(chǔ)入門學(xué)習(xí)路線可以總結(jié)為四步走:1.java開發(fā)環(huán)境的搭建;2.java初級(jí)之基礎(chǔ)語(yǔ)法學(xué)習(xí)(80%類似C語(yǔ)言);3.java中級(jí)之面向?qū)ο缶幊虒W(xué)習(xí)(重點(diǎn));4.java中級(jí)之應(yīng)用編程學(xué)習(xí)。第一步:JDK軟件開發(fā)包時(shí)java軟件開發(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,ifelse);4.數(shù)組的定義方式。此階段基本無難度,只要了解練習(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í)(javaweb方向,android學(xué)習(xí)),相信明確思路你會(huì)豁然開朗,更有學(xué)習(xí)動(dòng)力。java學(xué)習(xí)心得「篇三」1.學(xué)習(xí)之路,不走彎路,就是捷徑軟件開發(fā)之路是充滿荊棘與挑戰(zhàn)之路,也是充滿希望之路。Java學(xué)習(xí)也是如此,沒有捷徑可走。所有的人都期盼成功,但是并不是每個(gè)人都會(huì)為走向成功全力以赴。人們?cè)诳释晒Φ耐瑫r(shí),也渴望能夠少一分努力,多一分收獲。而事實(shí)上要獲取真正的成功,每個(gè)人都必須經(jīng)歷艱辛。無論你出身豪門,還是出身寒舍,你都不得不接受這樣一個(gè)事實(shí):成功沒有捷徑可走,只有頑強(qiáng)的意志與堅(jiān)持不懈的奮斗才能帶你走向成功。2.如何學(xué)習(xí)程序設(shè)計(jì)?Java是一種平臺(tái),也是一種程序設(shè)計(jì)語(yǔ)言首先一定要保持熱情,買一本關(guān)于這種語(yǔ)言入門的書,一開始不要看太難的,循序漸進(jìn),先看一遍。多練基礎(chǔ)代碼,將各種語(yǔ)句練得非常熟練,可以選一些計(jì)算機(jī)語(yǔ)言初等練習(xí)題做做。再重頭到尾好好看一遍,哪里不懂,可以與他人交流。多看看別人用這種語(yǔ)言寫的程序,借鑒編程方法,對(duì)自己錯(cuò)誤的思想進(jìn)行校正。多多練習(xí),每天都打一些代碼,畢竟熟能生巧!3.培養(yǎng)興趣興趣是指一個(gè)人力求認(rèn)識(shí)某種事物或從事某種活動(dòng)的心理傾向。知識(shí)是興趣產(chǎn)生的基礎(chǔ)條件,因而要培養(yǎng)某種興趣,就應(yīng)有某種知識(shí)的積累,學(xué)習(xí)編程,就應(yīng)該多看看那方面的書籍,不僅能提高自己的文化內(nèi)涵,也能漸漸培養(yǎng)自己的學(xué)習(xí)熱情。有空多到一些程序員論壇轉(zhuǎn)轉(zhuǎn),你會(huì)發(fā)現(xiàn),他們其實(shí)很樂觀幽默,時(shí)不時(shí)會(huì)冒出智慧的火花。4.腳踏實(shí)地,循序漸進(jìn)現(xiàn)實(shí)生活中,人人都有夢(mèng)想,都渴望成功,都想找到一條成功的捷徑。其實(shí),捷徑就在你的身邊,那就是勤于積累,腳踏實(shí)地,積極肯干。無論做什么事都要戒驕戒躁,踏實(shí)地走好每一步,讓自己的生活有目標(biāo)、有計(jì)劃,這樣我們的生活才會(huì)變得充實(shí),我們離成功也就越來越近了;相反,如果浮躁、急功近利,就不能集中精力去完成自己的人生目標(biāo),最后很可能一事無成,一敗涂地。5.多實(shí)踐,快實(shí)踐紙上得來終覺淺,絕知此事要躬行軟件開發(fā)是一門工程學(xué)科,注重的就是實(shí)踐,"君子動(dòng)口不動(dòng)手"對(duì)軟件開發(fā)人員來講根本就是錯(cuò)誤的,他們提倡"動(dòng)手至上",但別害怕,他們大多溫文爾雅,沒有暴力傾向,雖然有時(shí)候蓬頭垢面的一副"比爾蓋茨"樣。有前輩高人認(rèn)為,學(xué)習(xí)編程的秘訣是:編程、編程、再編程,筆者深表贊同。不僅要多實(shí)踐,而且要快實(shí)踐。我們?cè)诳磿臅r(shí)候,不要等到你完全理解了才動(dòng)手敲代碼,而是應(yīng)該在看書的同時(shí)敲代碼,程序運(yùn)行的各種情況可以讓你更快更牢固的掌握知識(shí)點(diǎn)6.多讀好書書中自有黃金屋,書中自有顏如玉。培根說,“讀史使人明智,讀詩(shī)使人聰慧,演算使人精密,哲理使人深刻,倫理學(xué)使人有修養(yǎng),邏輯修辭使人善辨。”從書中可以領(lǐng)悟“不以物喜,不以己悲”豁達(dá)情懷,亦可以領(lǐng)略“天下興亡,匹夫有責(zé)”的豪邁心胸。從好書中提升了思想境界,陶冶了情操。7.思想的領(lǐng)悟?qū)W習(xí)Java也是如此,必須要有扎實(shí)的基礎(chǔ),你才能在J2EE、J2ME領(lǐng)域游刃有余。掌握了基礎(chǔ)語(yǔ)法和Java程序運(yùn)行原理后,我們就可以用Java語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮乃枷肓恕C嫦驅(qū)ο螅且环N方法學(xué);是獨(dú)立于語(yǔ)言之外的編程思想;是CBD基于組件開發(fā)的基礎(chǔ);屬于強(qiáng)勢(shì)技術(shù)之一。java學(xué)習(xí)心得「篇四」1)現(xiàn)在有T1、T2、T3三個(gè)線程,你怎樣保證T2在T1執(zhí)行完后執(zhí)行,T3在T2執(zhí)行完后執(zhí)行?這個(gè)線程問題通常會(huì)在第一輪或電話面試階段被問到,目的是檢測(cè)你對(duì)”join”方法是否熟悉。這個(gè)多線程問題比較簡(jiǎn)單,可以用join方法實(shí)現(xiàn)。2)java的堆和棧的區(qū)別:堆:是一個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū),類的對(duì)象從中分配空間。這些對(duì)象通過new,newarray,anewarray和muitianewarray等指令建立,它們不需要程序代碼來顯示釋放。堆是由垃圾回收來負(fù)責(zé)的,堆的優(yōu)勢(shì)是可以動(dòng)態(tài)地分配內(nèi)存大小,生存期也不必事先告訴編譯器,因?yàn)樗沁\(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存的,Java垃圾收集器會(huì)自動(dòng)收走這些不再使用的數(shù)據(jù)。但是缺點(diǎn)是:由于是要在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,存取速度較慢。棧的優(yōu)勢(shì):存取速度比堆要快,僅次于寄存器,棧數(shù)據(jù)可以共享。缺點(diǎn)是,存在棧中的數(shù)據(jù)大小與生命期必須是確定的,缺乏靈活性。棧中主要存放一些基本類型的變量(int,short,long,byte,float,double,boolean,char)和對(duì)象句柄。3)java算法:1、冒泡排序:從頭開始,依次對(duì)相鄰的兩個(gè)元素進(jìn)行比較,發(fā)現(xiàn)有順序錯(cuò)誤就將它們調(diào)換過來!重復(fù)地進(jìn)行,直到?jīng)]有元素需要交換。是穩(wěn)定排序法,最好的時(shí)間復(fù)雜度是O(n);2、快速排序:思想是(Divide)選取一個(gè)基元X開始(一般選取數(shù)組的第一個(gè)元素),通過某種分區(qū)操作將數(shù)組劃分成兩個(gè)部分,左邊部分小于等于X,右邊部分大于等于X。(Conquer)左右兩個(gè)子數(shù)組遞歸地調(diào)用Divide過程,(Combine)快排作為就地排序算法,不需要任何合并操作!3、遞歸:程序調(diào)用自身,并非不會(huì)無休止地調(diào)用下去,需要有一個(gè)出口,當(dāng)滿足條件時(shí)程序也就結(jié)束!不然的話,就會(huì)出現(xiàn)程序死循環(huán)。4)JVM調(diào)用GC的頻度還是很高的,主要兩種情況下進(jìn)行垃圾回

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論