返學費網(wǎng) > 培訓機構(gòu) > 全國IT培訓中心
想了解java基礎叫什么嗎?想了解什么才是java的基礎知識?,學習JAVA需要什么基礎,學習JAVA需要什么基礎?,學習java需要什么基礎,怎樣才能學好java基礎?記住,平時沒人會給你說這些!,我想學習JAVA,需要什么基礎,沒有基礎可以學么,接受白瞟:Java基礎核心知識大總結(jié).pdf?? 嗎?......本文帶你一探究竟。
近日里,很多人邀請我回答各種j2ee開發(fā)的初級問題,我無一都強調(diào)java初學者要先扎實自己的基礎知識,那什么才是java的基礎知識?又怎么樣才算掌握了java的基礎知識呢?這個問題還真值得仔細思考。我做j2ee開發(fā)已經(jīng)超過十載,作為過來人,心路歷程估計和大家差不多。編碼的前幾年,很長一段時間覺得java簡單,開發(fā)實現(xiàn)各種功能都很輕松,代碼寫起來根本不費勁(主要是因為寫的代碼都是一些功能業(yè)務邏輯)。但同時自己心里明白,自己其實沒有什么水平,自己這3,4年以來學懂的東西就那么多,其他人幾個月就可以學會,自己的競爭力在哪里?這種矛盾的心理,困擾了我非常長的時間,非常的苦惱!總有一種報國無門無處發(fā)力的感覺。這個時期,熱衷了使用各種框架,各種api,常以今天學習了某個api,組件,框架的使用就覺得自己學到了東西,設計模式也看過不止一次,但都沒有啥感覺。一方面很努力學習,一方面又覺得不踏實,因為例如這個api我知道而你不知道,但我告訴你之后你就知道了,那我比你的優(yōu)勢在哪里呢?苦惱*2過了很長一段這種惶惶不可終日的日子,決定自己要改變,改變的方向就是閱讀自己用到的java相關的源代碼,看看jdk是如何實現(xiàn)的。就從基本的數(shù)據(jù)結(jié)構(gòu)看,然后看多線程相關,在學習前臺等等。寫的代碼還是那些代碼,代碼還是那么簡單,但我力求做到知道代碼背后的真相,這就是我最開始努力的方向。于是不再把時間都花在追求各種新框架、新API的使用上,每天都花時間在看實現(xiàn)原理上。就這樣過了大半年左右,終于不再迷茫,不會在覺得自己只懂a(chǎn)pi的使用,覺得自己沒有那么膚淺了,說脫胎換骨也不為過。那段時間,是我成長最快的時期,也是最充實的一段時光。Talk is cheap,show me the code。舉例說明大家會比較有感覺。如學習了hashmap的源代碼知道了工作原理之后,使用<Integer, String> map = new HashMap<>();代碼還是那個代碼,但我已經(jīng)知道了hashmap背后的東西數(shù)據(jù)結(jié)構(gòu)是鏈表的數(shù)組(注:后面的版本為了提升性能,已經(jīng)是改成鏈表或者樹(節(jié)點較多)了)思想上是空間換時間的算法構(gòu)造函數(shù)上有容量和負載因子2個參數(shù)以及作用決定性能的是key的hashcode是否夠快、結(jié)果夠分散(不分散就會變成鏈表的性能了),和擴容的開銷(什么時候擴容,和負載因子有關)然后寫代碼的時候,如果知道了最終的容量(尤其是數(shù)據(jù)量大的時候),我都會指定初始化容量,類似如下List<SomeBean> list = (); Map<Integer, String> map = new HashMap<>((int)(list.size()/0.75));//0.75為默認負載因子如果工作中某個map使用特別多,性能還需要繼續(xù)優(yōu)化,我就會考慮從以下方面優(yōu)化如果key是自己定義的對象,那么hashcode方法是否夠快(最少應該緩存保證只計算一次,而且放入之后不能改變,決定hashcode的字段不能改變)? hash的結(jié)果是否夠分散?可以考慮調(diào)小負載因子,花更多的空間來換時間學習源代碼的時候,特別有意思,你會強烈感覺到一個詞:舉一反三!觸類旁通!學習api使用的時候,如果你只知道使用不知道原理,很難舉一反三,感覺的是死記硬背。但學習了原理之后,知識成體系后,很容易舉一反三,學的越多就容易,還是以hashmap為例,我舉一個hashmap反三個點。1. 你會知道但凡有數(shù)組的數(shù)據(jù)結(jié)構(gòu),構(gòu)造函數(shù)都有一個容量的初始化參數(shù)(或者說構(gòu)造函數(shù)有初始化容量的可能都是數(shù)組的數(shù)據(jù)結(jié)構(gòu))。構(gòu)造函數(shù)如下public ArrayList(int ) //不是數(shù)組就沒有 public HashMap(int ) public (int capacity) 你就會知道,數(shù)組擴容很耗性能(數(shù)據(jù)量大容易oom),盡量指定容量。2. 算法是空間換時間,還有沒有其他算法是這種思想的?你最少能找到一個桶排序。3. 數(shù)據(jù)庫的分庫分表,思路和hashmap大同小異4. 各種分布式的hash一致性算法,第一步都是創(chuàng)建一個最大的數(shù)組(Integer.MAX_VALUE),就是避免了hashmap最耗性能的擴容運算。學習了hashmap之后,你很自然就會去了解其他的map,如TreeMap,(超級有用),HashTable,(算法思路很有意思),等,你會知道set就是用map做的,都不需要學。到了這步,map相關就可以暫告一段落。在學習中,我發(fā)現(xiàn)思想上的東西是最重要的,你理解了思想,一下子就豁然開朗了,在也不需要死記硬背了。如學習CAS的時候,大家都知道這是一種指令級的免鎖實現(xiàn)??创a的時候,我一度疑惑為什么會有個while死循環(huán)(原諒我天資駑鈍) public final int ( ) { int prev, next; do { prev = get(); next = .(prev); } while (!(prev, next)); return prev; }后來從思想上理解,才知道樂觀鎖的概念,就是很樂觀,假設你不會出錯,但你要是出錯了我就重試有辦法給你修復,對應的就是悲觀鎖,就是很悲觀,覺得不鎖就會出錯,如關鍵字和。這體現(xiàn)了2種不同截然不同的管理思想。這種思想經(jīng)常體現(xiàn)在多個系統(tǒng)集成的設計,有些時候如果你用悲觀的思想設計,實現(xiàn)起來很麻煩或者無法實現(xiàn),但如果你用樂觀的思想,減少出錯條件,然后出錯了能解決,代價就會小很多。說了這么多,我想說的就是,j2ee的基礎知識就是你做項目中代碼背后的東西。提高自己水平的方法很簡單,就是把大部分時間去了解實現(xiàn)原理,了解思想,讓自己的知識串起來,形成體系。j2ee的知識特別多,學得人想哭,千萬不要一開始把時間花在各種框架、組件的使用上,在我看來那是本末倒置。簡單來說:先修內(nèi)功再練招式。我覺得重要的、工作會用得到的知識就是一個請求從前臺到后臺處理的過程需要用到的東西,最少包括以下點:js,html,css,ajax,ajax跨域,跨站腳本,web緩存,web優(yōu)化,nginx,apache作用,鑒權(quán)方式,cookie,session,servlet,filter,基本數(shù)據(jù)結(jié)構(gòu),線程池,線程并發(fā),緩存,io等等,知識點非常多。如你前臺用jq,你應該了解他的選擇器和ajax是如何實現(xiàn)的(其實去了解就會發(fā)現(xiàn)不復雜)?而不是只是會用。后臺你用springmvc,你要了解他是如何工作,每一個配置是做什么,為什么?j2ee知識點特別多,每一個都能寫很多,我也在不斷學習中。具體要寫我還真不知道如何下手,我就列舉一下我覺得基礎的東西(面試的時候問的問題),有簡單有難,你覺得偏可能是你沒有做過這塊的開發(fā)或者做得比較淺:map有哪些,特點和使用場景?(只知道hashmap,hashtable是不夠的。。。)哪些方面會影響hashmap的性能?線程安全的map有哪些,是如何實現(xiàn)線程安全的(jdk1.8大不同)?鎖有哪幾種?公平鎖,讀寫鎖等如何實現(xiàn)?能加在哪些地方?什么區(qū)別?死鎖的形成條件?現(xiàn)在很少死鎖了,很少問原子數(shù)據(jù)對象的原理?相關知識,condition如何使用?(很重要的知識點,強烈推薦閱讀源碼,教科書般)volatile的相關知識(內(nèi)存屏障,重排)原理和使用?(超級有用的知識點,工作中使用很多,讓代碼漂亮很多,后面專門開貼寫)多個線程同步等待?(,,Semaphore信號量很多語言都有,實際上使用不是很多,線程池就可以實現(xiàn)大部分等待功能)線程池?(種類,重要的方法,這個一般是使用層面,簡單)動態(tài)代理?反射?內(nèi)???(考察知識面)session相關知識?和cookie關系?分布式session實現(xiàn)原理?cookie相關知識?有哪些屬性?(有些屬性很有用,只是我們很少留意而已!)nginx,apache 實際項目能做哪些?(鑒權(quán),轉(zhuǎn)發(fā),緩存,反向代理等)和tomcat什么關系?最少了解ajax跨域原因?解決方式?(重點知識,做SE避免不了的問題。這里很多知識點。)jsonp原理?后臺需要改動嗎?(jsonp雖然現(xiàn)在落伍了,但還是會問問)web優(yōu)化知識點?(常規(guī)知識點)前臺緩存相關?(200cache,304,ajax緩存,如何實現(xiàn)緩存)一列舉就根本停不下來了。。。其他的spring框架的東西也很多,還有jvm的東西,系統(tǒng)集成相關,數(shù)據(jù)庫相關,io做得很少也不懂問,后面再慢慢把我的學習過程和偶得寫下來。很多東西我也是了解個大概,就是看看你有沒有學習過,不斷學習是程序員最重要的特征。我不算高手,只能算一個合格的老程序員。這里只是說了一下自己之前學習的方向和列舉了幾個學習中的例子,大家見仁見智。帖子也是針對迷茫的初學者有感而發(fā),希望能幫助到大家。最后我總結(jié)一下:初學者先廣在精,關注代碼背后的實現(xiàn),關注內(nèi)功修煉,了解實現(xiàn)原理和思想,形成自己完整的技術(shù)體系,知識成片之后就容易觸類旁通,進步的速度就會越來越快。最后以我在每一個項目組和開發(fā)人員聊天都會說的幾個例子結(jié)尾:“少林功夫里面有功和拳之分,馬步功,石鎖功是功,蛇拳猴拳是拳,你不可能練會了蛇拳猴拳就能打人,你必須先重點練功。喬峰在聚賢莊用太祖長拳把大家打得落花流水,我們用太祖長拳就只是個廣播體操。同樣,我們要分清編程里面那些是功那些是拳,代碼背后的實現(xiàn)和思想是功,各個框架、api使用是拳。初學者應該大部分時間花在練功上,功到了拳自然就有了,切勿本末倒置?!敝x謝大家閱讀!開了一個專欄,記錄我的學習之路和編程習慣,每周最少一更,歡迎關注:我的學習之路
只要真的要去學,現(xiàn)在就可以。如果是自學的話,麻煩會大一點,最有可能就是遇到不懂就放棄,所以最好有個老師帶。JAVA只要你的思路正確,就能夠做出來。有人說,要數(shù)學好,也有人說,英語要好。事實上,JAVA涉及到的英語單詞不多,數(shù)學,你只要清楚它的實現(xiàn)原理也就可以了?,F(xiàn)在互聯(lián)網(wǎng)如此發(fā)達,百度,谷歌是你最好的老師。怕的是你遇到一點困難就放棄,或者只是一時的興趣。說了那么多,也就是說要有決心,從最開始學起,基本上的入門書一步一步來。
不需要什么基礎,當然如果有C或C++基礎的話學起來會快一點,看書的話,推薦《Head First Java》,書中有很多圖片對程序進行說明,所以就算看英文版,也不會覺得很難看懂。還有,以前在網(wǎng)上下了一本電子書叫《良葛格Java JDK 5.0學習筆記》,感覺也挺適合初學者的
基本的英語、較好的理解能力和接受能力。因為一門編程語言就是所有的信息是你自己定義的,你缺什么就定義什么,需要什么就構(gòu)造什么。語言所提供給你的只是幾個關鍵字,關鍵字的作用就類似于工具一樣。把自己當做上帝,在你寫的程序里你就是god,上帝說有光,就有了光 。當你學習java的時候,java不僅僅提供了工具,還提供了許多類,類就是說我自己定義的東西,是屬于什么范疇的。
迅速發(fā)展的信息技術(shù)時代,互聯(lián)網(wǎng)也是行業(yè)的領軍者。而Java這門語言也一直成為電腦語言的領頭大哥,而且在市場上這門語言也非常的成熟,這方面的人才也是供不應求??赡艽蟛糠秩硕贾?,Java這門語言也是有點難度的,主要在于他的知識點多,每一個知識點都跟前面的所有知識點相關聯(lián),前面的學不懂,后面的課程只會越來越困難??赡軙е履氵€沒有入門就放棄了。雖然所有電腦語言的入門第一件事都是,但是其中卻存在非常多的熬妙,比如為什么一定要有main方法才能夠執(zhí)行程序,為什么在輸出語句里面寫了幾個字母就能夠輸出數(shù)據(jù)來。這些我想你們都沒有真正的去了解過,所以從這些細節(jié)就可以看出來你是不是真正的學好了Java這門語言。 一、一個系統(tǒng)的學習方案,跟一套完整的教程?,F(xiàn)在是互聯(lián)網(wǎng)時代,不管是書籍還是視頻,網(wǎng)絡上面的資源是非常的多,但是學習方案每個人都不一樣,應該給自己定制一套適合自己的學習方案。這里推薦我覺得寫的好的且適合基礎入門學習的書籍:1,《Thinking in java 》適合入門建立正確的概念2,《Core java》這本書很貼近實踐,更多的API的介紹3,《java入門到精通》4,《java核心編程思想》5,《java編程思想,第四版中文》書是必要的,但是有一到三本就好了,不需要太多,太多了你會看不過來,如果你有更多的時間,那你可以多看幾本,不要盲目的去學習,這樣不僅達不到效果,還會浪費一大把的時間和金錢。學習過程中要不斷的鞏固學過的知識,每天把所學的知識點吃透,不斷的練習,Java這個行業(yè)需要的是你的經(jīng)驗,而經(jīng)驗就是在你不斷練習過程中通過程序的報錯來積累的。不要害怕寫代碼的時候出現(xiàn)錯誤,你要知道,行業(yè)里面的大佬,他們也是從你這里過來的,只是他們遇到的問題比你敲的代碼的字母量還多。給你看一下我梳理的javase學習路線: 二、掌握學習的方法,這么多自學的人,百分之七八十的人都會放棄,因為他們在盲目的摸索,或者說他們在模仿別人的學習方法。模仿別人沒錯,但是你也得選對人,不是每個人的學習方法都適合你,而且你跟別人的學習能力都不一樣,按照別人的學習方法可能會導致你跟不上或者浪費一部分的時間。其實不管你怎么去學,每天必須給自己一定的壓力,把自己的時間安排滿,不要讓自己閑下來,當你閑下來之后,下一秒鐘再去學習就沒有這樣的激情或者動力,因為當你閑下來之后你就會感覺到自己很疲憊,再去學習就沒有多大的效果。 三、每天要對自己學的知識點進行總結(jié),不管是學了多少,一定要記住一個前提,必須學懂。如果你這一個知識點沒有學懂就會導致你下一個知識點出現(xiàn)缺漏,然后把自己陷入一個即懂又不懂的僵局。然后再是對自己所學的知識點進行總結(jié),比如今天學了集合,集合中哪些方法是常用的,哪些方法比較難,在這過程中出現(xiàn)了什么問題,如何去解決這些問題的。再然后就對自己今天所學的知識點進行一個綜合的檢測,檢測自己的過程中把不會的或者忘記的再去復習一遍;或者給自己找一個綜合一點的題目,把前面所學的知識點包括在里面一起進行檢測,這樣不僅檢測到你今天的知識點,以前的知識點也進行了一個鞏固。 四、多去尋找別人的幫助,可能別人的一句話會頂過你幾天的知識點,雖然學習是要靠自己,但是想要java學的快學的扎實又高效,外界的幫助是必須的,很多初學者的問題都非常簡單,對于別人來說一眼就能看出是什么問題,而你自己看了大半天都找不到自己的問題出現(xiàn)在哪兒。學習要記住的一點就是要臉皮厚,自己解決不了的問題就去尋求別人的幫助;古代有一句話:聽君一席話勝讀十年書;這句話用在這兒一點都不夸張,因為別人在社會上摸爬滾打這么多年,他們的經(jīng)驗是你無法想象的,你幾天能想出來的問題別人一秒鐘就能夠指出你的問題所存在的問題,而且會把你說得心服口服,甚至有些話你都聽不懂。因為什么呢?還不是一個經(jīng)驗的問題,別人把遇到的問題經(jīng)過多年的經(jīng)驗總結(jié)成了自己的一句話,每次在工作的過程中都被這句話提醒到,不能再去范這個錯誤。其實行業(yè)里面的人都會有這個想法,都想炫耀自己學得知識,當你去問他問題的時候,他一定會跟你講,因為在他眼里看來他就是比你強,然后自己再無私奉獻一點知識給你,別人其實一點都不虧,不僅裝了X,還把你的問題給解決了。學習Java主要分為四個階段: 一、JavaSE基礎階段:JavaSE作為Java的基礎,非常重要,后面學習的框架的深度就在于你JavaSE的學習程度,基礎越好的人對框架的理解完全不一樣,因為他們會去了解框架的底層原理,而且還能看懂。這些放在一個JavaSE基礎不是很好的人來說很吃力,因為他們看不懂框架的源碼,自然就不會真正的知道框架的底層原理。有的人做了一兩年的java開發(fā),雖然工資高,但是他們對于JavaSE基礎部分的學習是遠遠不夠的,這也關系到他們后面的職業(yè)生涯的發(fā)展。所以,學習java的人JavaSE才是你真正的起點??烧莆盏暮诵哪芰Γ? 1,能夠掌握DOS系統(tǒng)常用基本命令 2,熟練使用eclipes編寫java代碼 3,熟練使用java語言的常用對象 4,掌握常用數(shù)據(jù)結(jié)構(gòu)和算法 5,掌握面向?qū)ο缶幊趟枷?,為以后深入javaee打下堅實基礎實戰(zhàn)項目:學生管理系統(tǒng)java項目鏈接: 二、數(shù)據(jù)庫:數(shù)據(jù)庫是開發(fā)一個程序中不可缺少的部分,一個程序必須有一個數(shù)據(jù)庫。數(shù)據(jù)庫主要是用來保存數(shù)據(jù),保證數(shù)據(jù)不會錯亂,不會隨意的改動,更不會使數(shù)據(jù)消失,保證了數(shù)據(jù)的完整性。 三、JavaWeb和網(wǎng)頁三劍客:JavaWeb基本上是所有的框架的入門,學懂了JavaWeb之后,后面的框架學習也會提升一個檔次。網(wǎng)頁三劍客就是HTML、JS、CSS;這些也是學習后端必須掌握的知識。java網(wǎng)頁開發(fā)可掌握的核心能力1,運用常用的網(wǎng)頁開發(fā)技術(shù)設計網(wǎng)頁2,掌握WEB系統(tǒng)呼叫管理3,掌握javaWeb開發(fā)核心技術(shù)4,運用javaWeb核心技術(shù)完成簡單的功能實現(xiàn)5,掌握javaWeb高級技術(shù),創(chuàng)建更好的Web應用程序項目實戰(zhàn):鏈接: 提取碼:t0x3 四、JavaEE框架:基礎框架:SpringMVC、Spring、MyBatis擴展框架:maven、、、、redis、等等代碼管理工具:git、svn項目實戰(zhàn):鏈接: 提取碼:xrlp記住,基礎學習不要盲目的追求學習速度,要一步步走穩(wěn),多去敲代碼練習,多積累經(jīng)驗。我是java開發(fā)工程師,這些都是我這些年在工作中的一些基本的總結(jié)和經(jīng)驗,我是過來人,個人觀點,希望把我經(jīng)歷過的,學過的,看到過的分享給你們大家,希望你們在學習中少走彎路,提高學習的效率,少花冤枉錢和時間,這些都是實話,忠言逆耳,希望可以幫助到你,你要知道社會是現(xiàn)實的,當你走向社會的時候,你會發(fā)現(xiàn),沒有真本事,社會不是那么好混的。
只要你想學。沒有什么事學不會的。要區(qū)別開英語和計算機英語的區(qū)別。因為變成是基于英語的,所以學會英語會有助于你去記憶代碼和閱讀幫助文檔。當然如果感興趣,英語不好也沒關系。甚至在你學習JAVA的過程中還能幫你練習英語。至于數(shù)學,其實要求的就是一個邏輯思維。只要你邏輯思維夠強。數(shù)學不一定要非常好。數(shù)學好的人邏輯思維很強。但是數(shù)學不好的人不一定邏輯思維不強。也許只是因為在這上面發(fā)揮不出來??偟膩碚f,聯(lián)系總是有的。但是關鍵還是看你自己。還是那句話,只要你想學,沒有學不會的。
↓↓↓程序員必備資料全在這里,我給大家都準備好了,免費領取無套路,每天更新↓↓↓程序員資料大全自學Java,如果覺得看《Java編程思想》或者《Core Java》等之類的“圣經(jīng)”覺得內(nèi)容太多,一下子吃不透的話,不妨看看這本《Java基礎核心總結(jié)》的PDF小冊子,內(nèi)容短小精悍,包含了各項Java基礎知識的凝練總結(jié)。良許已經(jīng)把資料準備好了,領取方式在這(請按卡片上的文字提示操作哦,很簡單)↓↓↓ ……,幾乎涵蓋了Java語言的各項基礎知識,隨便截幾張圖看看吧。良許已經(jīng)把資料準備好了,領取方式在這(請按卡片上的文字提示操作哦,很簡單)↓↓↓
上述文章了解到關于什么才是java的基礎知識?,學習JAVA需要什么基礎,學習JAVA需要什么基礎?,學習java需要什么基礎,怎樣才能學好java基礎?記住,平時沒人會給你說這些!,我想學習JAVA,需要什么基礎,沒有基礎可以學么,接受白瞟:Java基礎核心知識大總結(jié).pdf?? ,讓我們對java基礎叫什么 有一個直觀的認知。我們發(fā)現(xiàn),作為一個優(yōu)秀的Java程序員是多么的自豪。
只要一個電話
我們免費為您回電