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

a724888發表於2020-03-01

副本_未命名.jpg

原創宣告

本文作者:黃小斜

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

系列文章介紹

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

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

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

本文思維導圖

Java基礎.png

簡介

在這個三百六十行,行行轉網際網路的後網際網路時代,Java作為一門深受培訓班、企業以及開發者喜愛的語言,仍然非常火爆,雖然比不上之前幾年的風光,但是依舊有一大批的追隨者和學習者湧入。

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

根據百度百科的介紹,Java是一門物件導向程式語言,不僅吸收了C++ 語言的各種優點,還摒棄了C++ 裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。

Java語言作為靜態物件導向程式語言的代表,極好地實現了物件導向理論,允許程式設計師以優雅的思維方式進行復雜的程式設計。

Java具有簡單性、物件導向、分散式、健壯性、安全性、獨立與可移植性、多執行緒、動態性等特點 。Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等。

簡單來說,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,我可能會這樣入手吧。

1、想通過Java學習視訊入手,把基礎搞懂。

2、接著看一些JavaWeb相關的視訊,把常見的JavaWeb技術棧搞懂,最好要看新一點的視訊,防止過時了不好使。

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

4、找個專案課,有視訊有原始碼的那種,跟著視訊學習,還能跟著敲敲程式碼,實現一些功能,更能夠加深印象和理解。

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

推薦資源

書籍

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

視訊

某客學院入門課

慕X網的Java基礎課

某客網的Java初級和高階專案課

部落格

Java技術倉庫《Java程式設計師複習指南》

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

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

我的個人部落格: https://how2playlife.com/

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

這裡重點推薦兩個社群,實打實的有很多幹貨,對文章要求比較高,我的很多文章質量都達不到他們的要求。

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

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

總結

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

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

文中提到的資源都可以免費領取,在我的公眾號【程式設計師黃小斜】回覆“Java入門”即可免費領取對應的資源。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69906029/viewspace-2677945/,如需轉載,請註明出處,否則將追究法律責任。

相關文章