2018年如何快速學Java

前言

只有光頭才能變強css

提早預警:本文適合Java新手閱讀(老手可在評論區給下建議),但願你們看完能有所收穫。html

1、爲何我要寫下這篇文章

1.1直接原因:

  • 在今天(2018年11月4日)有個同窗給我發微信找我
    • 同窗:能不能給他一個網頁他改一下,他想參考一下,而後用於作畢業設計。
    • 3y:能夠啊,你的題目是什麼啊?想用Java來寫嗎?
    • 同窗:對啊,我如今在學Java呢(ps:以前跟該同窗聊天的時候"我看着這些代碼就頭暈,我對電腦真不感興趣"....真香!)
    • 隨後這個同窗發了一個小視頻過來,說本身在學Java。我看了一下:大概是在練習&^|這些操做符。

同窗發過來的小視頻圖--截取

最後,我告訴這同窗:"你去找視頻看吧,你如今學這些對你的畢業設計沒有什麼幫助的啊"。而後讓他去B站找視頻看了前端

ps:我並非說學&^|這些運算符是沒用的,但若是單純是想本身用Java來寫畢業設計的話,這些知識點應該是用不上的。java

1.2間接原因:

自身經歷:linux

我學習Java也是自學的,在大學期間也是一直一我的在學(身邊的同窗可能家裏有礦)。即使我在學習的時候也去搜了很多的意見,例如在知乎上找 ,<Java應該怎麼樣學?>, <給剛開始學java的年輕人一些建議> 等等相似的話題, 可是如今回過頭來看,我仍是走了很多的"彎路"了。 git

好比說,當時我花了蠻多的精力去學JSP,最後整理成博客發到網上去。網友的評論:github

  • 「不玩 JSP 十幾年了「。
  • 「jsp不是老掉牙的技術嗎」。
  • 「看這個有一種穿越的感受……碼了6w多字,看着就心疼……」。
  • 「這十年前的技術都被挖出來了?」
  • 「剛畢業時寫過好幾個自定義標籤,那時候感受好有成就感,可是如今,用於view的jsp,彷佛有點過期了,view通常用【模板】或者【徹底靜態 + ajax + json】了」

JSP博文

嗯...那篇文章我當時在2018.02.07發佈。我學JSP的時候是在2017年初吧,其實在2017年JSP也已是落後的技術了,但我仍是花了很多的時間去學習JSP的各類用法(自定義標籤,JSTL,EL表達式等等)。web

網友們其實說得都沒有毛病,對我來講:在2017年花了很多時間去學如何使用JSP(過時的技術),這就是我認爲的"彎路"ajax

  • ps:在2018年花點時間瞭解JSP是沒毛病的,但深刻學習的話是不必的。

"彎路"說明:若是你有充裕的時間,怎麼學都不是事,畢竟你是真真正正地在學編程。只要在學編程,就不是彎路,最怕你不學。chrome


以這篇文章回復我部分的讀者:

寫博客以來,仍是有部分讀者是零基礎學Java的,有轉行的、也有年輕的師弟師妹的。通常他們也問我應該怎麼學Java比較好,學習Java的路線應該是怎麼樣的。

emmmm,我通常都是比較簡單的回覆一下:讓他們多作筆記啊,接下來應該花時間學什麼,不學什麼...就完了..

因此,寫完這篇文章,遇到再問我如何學習Java的時候,我直接發個連接就完事了(懶人必備)..

1.3目的

若是你:

  • 想要用Java在短短的幾個月時間內寫出本身的畢業設計。
  • 想要用Java體驗一下如何從零搭建一個屬於本身的網站。

那麼能夠看一下我下面所寫的不成熟的建議

2、如何快速學Java

這裏我以Java EE(Jakarta EE)/Java Web的經驗來講哦。(都把大家看作是零基礎入門的了)

學習Java EE(Jakarta EE)整體來講會有如下三大模塊:

  • Java
  • 數據庫
  • Web前端

數據庫、Java、Web前端

在我看來,不管學習什麼技術都好,在學習該項技術的細節以前都得知道:這項技術是什麼,爲何我要學習這項技術,學習了這項技術有什麼好處

  • 看似好像我在說多餘的話,但若是你在學習某項技術的時候沒法回答上面的三個問題。再過幾天,你很大程度上會忘記這項你所「學過」的技術。
  • 好比說,如何你連「爲何要用多線程」你都沒法用通俗的話來解釋清楚。即使你當時學習的時候知道多線程能夠用xxx方式來建立,多線程的xxx的api。那再過兩個月,人家問你」Java多線程有什麼用啊?」。你想一想你還能答什麼,我認爲你是記不住「多線程能夠用xxx方式來建立、多線程的xxx的api」這些知識點了。
  • 再好比說,若是學習Spring時不知道IOC和new對象有什麼區別,那我爲啥不直接new對象而要那麼麻煩去學Spring呢?

簡單來講:若是你不知道學習某項技術是幹嗎用的,那先不要學


若是你是零基礎學習Java並理解力不是爆棚的話,我建議以視頻學習爲主。

可能你會看到這樣相似的言論:

  • 「看視頻學習太慢了」
  • 「直接看源碼啊,源碼就是最好的解釋」
  • 「有問題直接Google啊,用什麼百度」
  • 「最好的資料是官網文檔」
  • .....

可是,那都是對有經驗的人或者高智商的人羣來說的。

若是是零基礎普通人,看視頻學習/看不懂源碼/用百度/看中文博客來學習不丟人

ps:若是看的視頻講師的語速不是特別快,建議以1.5或者1.75倍速觀看。

2.1關於視頻資源

我在學習Java的時候也收集了不少的視頻資源,並非每一個都有看過。只是在混羣的時候發現有人發了,就複製下來整理一下罷了。

視頻資源

其餘的視頻資源:

  • B站:(bilibili.com)一個神奇的網站。若是你想看哪一個視頻,能夠先搜一下B站有沒有。
  • 慕課網:(imooc.com)裏頭也有挺多的視頻資源。
  • 公衆號/混qq羣/微信羣:很多人手裏都有幾t的資源,若是跟羣友的關係不錯,通常都會免費給你發的
  • ......

2.1學習Java基礎

零基礎學習Java的路線我簡單總結爲如下:

劉意視頻

在學習Java基礎時,我簡單來講一下什麼東西能夠不碰

  • &^|位運算符,++ii++相似這種繞死人的語法
  • 內部類
  • AWT,SWING編程
  • 註解

須要深刻理解的知識點:

  • 流程控制
  • 面向對象的概念
  • Java語法
    • this指針、重寫和重載、final、static等等這些基礎的東西
  • 集合(包括泛型)
    • 經常使用的集合類
  • IO流
    • IO流代碼的編寫
  • (理解這些知識點,可以在有提示的狀況下碼出代碼,但不要爲了一些細節鑽牛角尖)

簡單過一遍的知識:

  • 異常
  • 多線程
  • 網絡編程
  • 反射機制
  • (你得知道這個知識點是幹嗎用的,爲何要學這個知識點,能看懂具體的代碼!)

對於上面所說深刻理解的知識點,我我的是很是建議在學習期間寫筆記(博客)的。若是你想寫筆記的話,最好直接就用markdown語法來編寫,而不是用word/簡單的記事本。

markdown語法很是好學,幾分鐘跟着就能夠學習了,幾乎全部的it博客網站都支持markdown

若是喜歡畫思惟導圖的,我這裏推薦processOn就能夠了。無需下載Xmind這麼麻煩了:

有的時候並不須要使用IDEA打開一個.java或者.xml這樣的文件,可使用notepad++記事本:

學會***和使用Chrome瀏覽器,好比說下載攔截廣告插件,英語翻譯插件

雖然是快速學習Java,但學完上面的估計得一個月了(:..

一個月發現都是面向控制檯編程(console),輸入輸出一些數據來玩。

控制檯

期間可能就學習IO的時候能夠複製文件,修改文件名有點意思。但好日子就要來臨了

2.2學習Java Web基礎

首先咱們能夠學習一下Web前端的知識(此部分都簡單過一下就行了)

到目前爲止,學完上面這些能夠搭建「能看」的靜態網頁了。曾經看過一段話來總結上面的技術:

  • HTML是名詞,CSS是形容詞,JavaScript是動詞

隨後學習JavaWeb的路線以下:

  • Tomcat(簡單過一下)
  • XML/註解(簡單過一下)
  • Servlet(重點理解)
  • HTTP協議(重點理解)
  • Filter過濾器(重點理解)
  • Listener監聽器(簡單過一下)
  • JSP(簡單過一下)
  • AJAX、JSON(簡單過一下)

Servlet知識點

基於上面的學習,起碼已經可使用request對象來接收前端發送過來的數據,使用response對象將Java後端的數據返回給前端,使用Filter攔截器來處理中文亂碼問題(Tomcat默認的編碼是ISO-88591)。總的來講已經能夠實現先後端交互了

2.3學習數據庫

數據庫這裏指的是關係型數據庫,通常咱們以MySQL來入門就足夠了。

在學習期間,其實不少時間都耗費在配置環境上面,好比我以前安裝JDK,安裝MySQL,安裝Oracle就耗費了很多時間。後來我也將其寫成博客,須要從新安裝的時候翻一下博客就行了。

主要學習SQL的基本使用吧:

  • 建立表(create table)
  • 增刪改查(insert,delete,update,select)
  • 對於存儲過程、觸發器這些瞭解一下便可
  • 對於索引、鎖後面再學(此部分很重要,但以快速入門來講,能夠先不看)

MySQL基本語法

2.4學習Java鏈接數據庫(JDBC)

到這裏,咱們Java Web、數據庫、Web前端的基礎都已經基本學完了,但此時Java和數據庫是相互獨立的。咱們想要以程序的方式來對數據庫的數據進行操做,那就要學習一下Java鏈接數據庫(JDBC)。

JDBC這項技術並不難呀,就是模板代碼,來來去去就幾個步驟:

  • 導入MySQL或者Oracle驅動包
  • 裝載數據庫驅動程序
  • 獲取到與數據庫鏈接
  • 獲取能夠執行SQL語句的對象
  • 執行SQL語句
  • 關閉鏈接

因爲這些代碼可能會重複出現,那咱們能夠學習一下DbUtils這個組件:能夠幫咱們減小編寫JDBC的模板代碼。

2.6項目管理和框架的學習

通過上面的學習,已是能夠在本地寫一個Web項目了。

  • 頁面框架使用BootStrap/Materialize框架來搭好
  • 請求處理交由Servlet,返回的數據能夠經過AJAX或者使用JSP,DAO層可使用DbUtils。
  • 數據保存在MySQL中

爲了讓寫代碼變得更爽,我建議用半天學一下Maven(項目管理工具),用幾天學一下SpringBoot

  • 從Servlet直接跳到SpringBoot可能有點難理解,但多搞幾天我相信仍是能夠的..

2.7Linux學習

最後,咱們在本地上寫完的項目想要讓其餘人都看得見,通常都會部署在Linux環境下的。(此部分的學習能夠等到將項目寫完,想要部署項目才學習)

我是不推薦使用虛擬機再搞Linux的,直接買一臺方便不少

  • 若是是學生的話,一個月的學生版也就10塊一個月。
  • 若是是轉行的大哥話,如今阿里雲雙十一有優惠,買起來就很便宜了。

優惠連接:https://m.aliyun.com/act/team1111/#/share?params=N.FF7yxCciiM.pfn5xpli

3、總結

總結一下我認爲學習Java的路線:

  • Java基礎-->流程控制-->面向對象(包括Java語法)-->Java集合-->Java IO流-->異常-->多線程-->網絡編程-->反射
  • JavaWeb基礎-->HTML/CSS/JavaScript/jQuery-->Tomcat-->XML/註解->Servlet-->HTTP-->Filter過濾器和監聽器-->JSP-->AJAX/JSON-->數據庫(MySQL)-->JDBC和DbUtils
  • 項目管理和框架-->Maven-->SpringBoot
  • Linux基本命令

最後咱們的項目是這樣的:

  • 以Maven來管理咱們的項目
  • 前端經過BootStrap來搭建頁面框架
  • SpringBoot來搭建Java後端環境,SpringMVC處理前端請求(SpringBoot整合了)
  • DAO層使用DbUtils組件來完成,MySQL做爲數據庫

固然了,個人Java路線不必定就是對的,我這裏只是給出一種路線。

再次說明:這套路線是以「快速」學習Java的,若是你想要找到一份好工做,上面的知識點是不夠的

若是是你,你會給出一條怎麼樣的Java路線?不妨在評論區留言~~

一個堅持原創的Java技術公衆號:Java3y,歡迎你們關注

3y全部的原創文章:

相關文章
相關標籤/搜索