先搞清楚這些問題,簡歷上再寫你熟悉Java!

副本_未命名.jpg

原創聲明

本文做者:黃小斜css

轉載請務必在文章開頭註明出處和做者。html

系列文章介紹

本文是《五分鐘學Java》系列文章的一篇前端

本系列文章主要圍繞Java程序員必須掌握的核心技能,結合我我的三年多的Java學習和工做經歷,總結和沉澱下來的方法論,但願能讓Java學習這件事變得更簡單,做者目前在阿里作Java,忙裏偷閒分享一些技術文章,有興趣看本系列更多文章能夠關注個人公號【Java技術江湖】java

系列文章將會把一些技術學習方法、過程、要領與個人學習經驗相結合,更加淺顯易懂,而且我也會把我學習時用的資料,書籍和文章拿出來分享給你們,節省你個人時間。所謂授人以魚也要授人以漁,是本系列文章但願達到的目標。git

本文思惟導圖

Java基礎.png

簡介

在這個三百六十行,行行轉互聯網的後互聯網時代,Java做爲一門深受培訓班、企業以及開發者喜好的語言,仍然很是火爆,雖然比不上以前幾年的風光,可是依舊有一大批的追隨者和學習者涌入。程序員

不妨先來看看Java語言時如何被定義的。github

根據百度百科的介紹,Java是一門面向對象編程語言,不只吸取了C++ 語言的各類優勢,還摒棄了C++ 裏難以理解的多繼承、指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。golang

Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅的思惟方式進行復雜的編程。web

Java具備簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特色 。Java能夠編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等。spring

簡單來講,Java就是一門基於C++ 開發,但又超越了C++ 的高級編程語言,它經過JVM虛擬機屏蔽了C++ 的複雜語言特性,轉而做爲一門面向對象語言,能夠更好地支持平臺移植、Web開發等應用。

爲何要學Java

瞭解了Java基本概念以後,接下來咱們就不得不談一談,咱們爲何學Java呢。

衆所周知,Java是市場上佔有率排名前三的編程語言,Java做爲企業級應用開發的首選,不只在不少企業獲得應用,也深受美團、阿里等互聯網大廠的青睞,特別是阿里,更是打造了大量的Java中間件,成爲了Java生態中最靚的仔。

對於求職找工做的同窗來講,Java可能仍然是後端工程師的最佳選擇,雖然golang和Python一直在追趕,可是Java做爲老牌語言,在企業中的地位很重要,它的市場空間仍然是沒法撼動的。

學習Java,就是爲了更好地開發應用,不管是開發web應用,仍是開發中間件,亦或是微服務,都是Java語言最擅長的,加上Java生態的豐富多彩,對於企業級應用的全方位支持,使用Java的開發大型應用的成本相對仍是比較低的。

如何學習Java基礎

第一次接觸

我第一次接觸Java仍是在大三的課堂上,當時有一門課程就是Java,教的都是Java基礎,在Java以前我還稍微瞭解過html、css這類前端技術,因此自認爲學習Java應該不會有太大難度。

結果證實我仍是想多了,剛開始老師就在介紹Java的基本數據類型,好比int的長度,double的長度,做爲一個非科班程序員,當時甚至連1個字節是多少都不知道。

接着咱們又學習了Java的數組,數組這個概念原本看起來沒什麼,可是接下來又出現了二維數組,老師還結合着數組的內存分配來和咱們講解,當時就暈了,因而就這麼半推半就的學完了第一堂課。

大學課堂大家都懂的,你們的注意力也沒有特別集中,有些關鍵概念錯過了也就錯過了。

其實重點還在後面,Java的重要特性就是面向對象編程,因而常見的一些概念,好比類和對象,繼承、多態、接口和抽象類都一一出如今咱們的視野裏,學習Java,這些概念沒有搞清楚的話,是很是耽誤事的,畢竟其餘一切高級特性都是基於此實現的。

勉強聽懂了面向對象的一些語言特性以後,後續的課程裏,咱們又繼續開始學習Java的高級特性,好比Java異常、多線程、集合類等等。

我只記獲得多線程那裏我就徹底聽不懂在說啥了,後面講了什麼,也就記不得了。我想大多數人第一次接觸Java也是一臉懵逼的狀態,誰第一次面向對象不都會緊張嘛。

學完了Java課,我能出師了吧?

一回生,二回熟,自認爲已經徹底掌握了Java的我(其實就學了一點皮毛)在大四畢業的那個暑假找到了一家本地的小公司進行實習。

當時我就想,我都已是學過Java的人了,到公司實習應該不成問題吧,因而我很是自信,就去上班了。

結果第一天我就傻了,領導給我安排了一個小任務,是一個新員工入職的練手項目,寫一個表單,完成錄入員工信息的功能,當時的Java工程師還要會寫前端,這個表單的樣式和js代碼都要本身寫。

更尷尬的是,我徹底看不懂這個項目的Java代碼,不是說好的面向對象編程語言麼,我先找到main方法,而後看一下每一步的執行邏輯就能夠了吧,應該不會太複雜吧。

結果,我打開工程,這玩意怎麼這麼大啊,結構還這麼複雜,這個service包是幹嗎的,這個dao包是幹嗎的,
還有啊,這個user類裏爲何有一大堆的get和set方法,這都不是最過度的,最過度的是,爲何還有一堆的xml配置文件,我一個都看不懂啊,什麼web.xml,裏面寫的都是啥啊。

更可氣的是,還有一個叫作servlet的包,裏面有各類各樣的servlet,這個servlet更是我聽都沒聽過的一個東西了。

當時個人心裏是崩潰的,我這大學的Java課白學了呀,怎麼到公司徹底用不上了,這跟說好的不同啊,不該該是挺簡單的一個東西嗎,我學了一門Java課程就應該徹底掌握了纔對呀?

如今回想起來,當初本身就是個傻白甜,根本不知道Java web是個啥,更不知道還有什麼web框架,Jsp和servlet了。那個時咱們這個項目用的仍是struct1,你能夠想象是多陳舊的技術棧了。

研究生階段:推翻重來

經歷了暑假實習的陣痛以後,我終於明白了,不是學完Java這門課就能幹活了,而是要學完整個Java技術棧纔算完事啊,至少我們的先學會JavaWeb呀,還有相關的框架也得會啊。

因而時間來到了研究生階段,我當時就想,幸好我還有兩年多時間能夠學這個Java,要否則就我如今這個水平,出去連個工做都找不到。

爲了避免讓本身在兩年後依然如此尷尬,我開始從新學習Java,如今回想一下,個人自學編程之路,也就是從那個時候開始的,當時我買的前兩本書就是《Java從入門到精通》和《JavaWeb從入門到精通》這麼接地氣的書,對Java小白來講簡直沒有抵抗力呀。

因而我不負衆望,看完了這兩本書,《Java從入門到精通》卻是中規中矩,畢竟不少概念我以前都接觸過了,可是我在《JavaWeb從入門到精通》裏看到了不少歷來沒見過的概念,什麼Java bean,spring、hibernate、jsp、jdbc、session和cookie,Tomcat等等,總之,這本書算是幫我開眼看世界的第一本java入門書籍了,雖然這本書在網上被罵的很慘,可是它銷量好不是沒有緣由的,把它當成百度百科看就能夠了。

明白了基本概念以後,接下來該學什麼呢,我陷入了思考當中。剛好某一天,有室友推薦我看某客學院的視頻,因而我當場就找到了學習方向,我在上面看到了一個Java學習路線圖,如獲至寶,開始沉迷於看視頻中沒法自拔。

某天我終於看完了視頻,因而又自信地想,這下沒問題了吧,我應該已經能夠作項目了吧?恰好咱們有一個研究生項目實踐,可讓咱們參與到項目開發中,因而我當時就選了JavaWeb方向的項目,準備在裏面大展身手。

實踐階段

然而,理想和現實仍是有必定差距的,當時咱們要作一個相似雲筆記的應用,我負責一部分的後端開發,當時咱們從網上下了一個demo,準備基於它進行開發,因而我激動地用一個叫作eclipse(實際上我也沒用過幾回)的ide打開了這個項目。

誒,這個畫風好像和以前的struct1也不太同樣啊,後來才知道這個就是spring框架,讓我好好瞅瞅這個項目到底長啥樣,這個controller包是什麼,service包和dao包好像似曾相識,可是這個pom.xml又是幹嗎的,爲何看起來裏面好像有不少jar包,沒錯,我仍是連工程都看不懂,再一次陷入了自我懷疑中。

沒辦法,只好硬着頭皮繼續自學唄,可是這段時間的自學並無太大成效,眼看者deadline逐漸臨近,咱們的小組長看不下去了,他發現咱們兩個後端確實都不咋會,前端搞了半天也只切了個圖,因而開始提及了本身的想法,我當時第一次據說過先後端交互,以及用json做爲數據傳輸的格式這種說法,後來才知道這都是開發的基本知識,

結果這個項目咱們尋求開源支持,仍是順利完成了,可是我確實什麼忙都沒有幫上,因而我又開始懷疑人生了,Java這個東西,到底該怎麼學呢,我書也看了,視頻也看了,該學的感受也都學了,怎麼仍是啥都不會呢?

若是從新開始,我會這樣學Java

不知道看到上面的內容,各位Java小白會不會有一些共鳴,明明一開始以爲Java挺簡單的,學着學着發現並不簡單。

學完Java基礎貌似就會作項目了?可是一接觸項目代碼,又發現本身就跟沒學過同樣。

因而又接觸了一些JavaWeb的書籍和知識,想要現學現賣,結果一看真正項目裏用到的又是另外一套技術,本身壓根見都沒見過。

有些事,你必需要經歷過,才能明白,有些坑,你不用本身去踩,由於我已經踩過了

若是讓我從新學習Java,我可能會這樣入手吧。

一、想經過Java學習視頻入手,把基礎搞懂。

二、接着看一些JavaWeb相關的視頻,把常見的JavaWeb技術棧搞懂,最好要看新一點的視頻,防止過期了很差使。

三、看看Java基礎和JavaWeb的經典書籍,加深對一些概念和原理性東西的理解,防止在項目實踐中搞不清楚。

四、找個項目課,有視頻有源碼的那種,跟着視頻學習,還能跟着敲敲代碼,實現一些功能,更可以加深印象和理解。

固然,這篇文章只談到了入門Java,其實Java技術棧遠不止這些東西,正如個人學習歷程這樣,你學的越多,就會發現你不懂的越多,後面我還會繼續帶來我在不一樣階段學習Java的一些分享。

推薦資源

書籍

這兩本我都沒怎麼看過,可是推薦就是政治正確,即便看不懂,買來供着也是極好的
《Java核心技術卷一》
《Java編程思想》

視頻

某客學院入門課

慕X網的Java基礎課

某客網的Java初級和高級項目課

博客

Java技術倉庫《Java程序員複習指南》

https://github.com/h2pl/Java-Tutorial

整合全網優質Java學習內容,幫助你從基礎到進階系統化複習Java。

個人我的博客:https://how2playlife.com/

社區:
CDSN我就不推薦了,反正百度大家搜一下也都是CSDN的結果

這裏重點推薦兩個社區,實打實的有不少乾貨,對文章要求比較高,個人不少文章質量都達不到他們的要求。

一、掘金
https://juejin.im/user/5b1d0d34e51d4506d936f561

二、開發者頭條 https://toutiao.io/subjects/329410

總結

關於如何入門Java,咱們今天就講到這裏了,若是還有什麼疑問也能夠到我公衆號裏找我探討,後續會有更多的文章推出,包括如何系統性地學習JavaWeb,如何系統性地學習Java核心技術和底層原理,以及如何系統性地學習後端技術。敬請期待。

對了,你想問我文章裏提到的書籍和視頻去哪找?我已經給你準備好了

相關文章
相關標籤/搜索