-
1 # IT人劉俊明
-
2 # Java架構進階阿南
大多數的開發朋友都有這樣的疑惑、:做Java開發,就算自己工作了3年、5年甚至10年,有些Java基礎知識還是無法張口就來,準確無誤?!不知道你們有沒有,反正我有。
為什麼會有這樣的情況呢?還不是因為Java知識紛繁複雜,無窮無盡!
沒錯,Java知識的確紛繁複雜,但要想學好Java,做到基礎牢固,還是有章可循的,下面就來分享一下我的Java學習心得!!
我身邊有個阿里的大牛,他強調,如果想學好Java,就一定要玩好JDK!
一、Java執行時在Java知識體系中,有一個重要的組成部分,就是JVM,而Java程式能夠得以在JVM上執行的根本就是JRE。
學好JRE,就需要我們不斷的摸索JVM執行Java程式碼的原理,各種記憶體分割槽以及在程式碼之下的秘密。
二、Java基礎類庫Java龐大的類庫系統是我們程式設計的基礎。在大牛看來,類庫的原始碼可以分為四個等級:
等級一:精讀原始碼
這個等級的類庫應該能夠做到原始碼瞭然於胸,倒背如流,包括:java.io、java.lang、java.util這三個包下的API,但也並不是所有的API都要精讀,像Exception和Error就可以忽略,還是要看在實際開發中的使用場景是否廣泛。
所以,當你迷茫於不知道學什麼,或者感覺自己什麼都會了的時候,不妨去看看這三個包下的基礎類庫,相信你一定能夠有所收穫的。
等級二:深刻理解
深刻理解不同於精讀原始碼的三個基礎包,深刻理解的含義是應該熟悉其內部實現邏輯和基本思路,並且有自己的見解。這個等級的類庫包括:
java.lang.reflect、java.net、javax.net、java.nio、java.util.concurrent。
深刻理解,這個級別看似比精讀原始碼要求低,但所選類庫確實最重要的。這個級別的類,全都是一些進階到高階所必須瞭解的。但是,由於這些類的原始碼往往非常複雜,要了解清楚細節花費的時間是非常多的,因此,花費巨量的時間去研究這麼複雜的程式碼其實沒必要。不過在使用這些類庫遇到問題時,可以透過閱讀原始碼的方式嘗試解決問題。這種學習方式不僅可以加深對類庫的理解,還會幫助解決90%的問題。
reflect代表反射,net代表網路IO,nio代表非阻塞io,concurrent代表併發。這四個傢伙可以說每一個都能夠面試官問上半天的,而且,這四個包的內容,如果要深刻理解的話,其實還牽扯了很多其他的知識。
舉個栗子:反射你要了解的話,就需要搞明白JVM的類載入機制;網路IO要搞清楚的話,你就要搞清楚TCP/IP和HTTP、HTTPS。等級三:會用即可
這個級別的類庫包括下面這些:
java.lang.annotationjavax.annotation.*java.lang.refjava.mathjava.rmi.*javax.rmi.*java.security.*javax.security.*java.sqljavax.sql.*javax.transaction.*java.textjavax.xml.*org.w3c.dom.*org.xml.sax.*javax.crypto.*javax.imageio.*javax.jws.*java.util.jarjava.util.loggingjava.util.prefsjava.util.regexjava.util.zip會用即可,這個級別要求很明顯,就是會用就可以了,這些包大部分都是在特定的情況下會用到,但卻不會時刻用到。
僅僅是用的時候稍微研究一下,知道其具體的用法即可,不需要深究。
等級四:無視
所有以上沒有提到的包。比如swing,awt這些玩意兒。
三、開發工具這些開發工具主要就是輔助開發,javac應該是最常用的一個,雖然你幾乎不用手動執行它。
此外,其實還有一些比較實用的工具,可以幫助你排查問題。而且有的面試官,也會問你這類問題。比如問你平時都用什麼工具排查問題。
還可以自己去JDK 的bin目錄下找一找,看有沒有什麼更好玩的工具。
綜上,就是阿里大牛分享的Java學習超級指南,你學會了嗎?!
希望我這些分享可以幫助在這個行業發展的朋友和童鞋們,在論壇部落格等地方少花些時間找資料,把有限的時間,真正花在學習上,我的很多文章都有分享各種架構資料,相信對於已經工作和遇到技術瓶頸或者寫部落格碼友,在這份資料中一定都有你需要的內容。
回覆列表
作為一名從業多年的程式設計師,同時也出版過Java程式設計書籍,所以我來回答一下這個問題。
所謂紮實的Java基礎,對於不同的物件有不同的要求,比如對於剛剛走出大學校園的畢業生來說,紮實的Java基礎往往指的就是清晰Java面向物件開發的各種概念,能夠完成基本功能模組的開發,而對於已經具備一定從業經驗的程式設計師來說,紮實的Java基礎往往指的是採用Java完成過多個不同型別的開發專案。
雖然對於不同的物件,對於Java基礎的要求會有所不同,但是總的來說,紮實的Java基礎應該涵蓋以下內容:
第一:清晰Java開發的過程。Java開發過程可以簡單的概括為三點,其一是掌握Java各種“抽象概念”的運用,包括類、介面、抽象類等的使用;其二是掌握Java開發的基本框架,比如MVC、DAO等;其三是掌握Java開發工具的使用。所謂的Java開發過程也可以理解為Java程式設計思維,建立Java程式設計思維是學習Java開發的重點。
第二:健全的Java知識結構。Java的知識結構可以分為三個部分,其一是Java基礎語法;其二是Java資源開發(資料庫操作等);其三是Web開發,其中Web開發包括的內容要相對多一些,還涉及到前端開發知識。
第三:具備一定的開發實踐能力。程式語言的掌握情況需要透過實踐能力來體現,開發過的專案越多,則會積累越多的開發經驗。Java目前可以從事Web開發、Android開發和大資料開發等任務,這些開發任務都能夠積累不同領域的開發知識。
最後,對於Java程式設計師來說,紮實的Java基礎往往還涉及到對於演算法設計和資料結構知識的要求,因為軟體開發說到底就是演算法和資料結構的問題。