前言
大家好我是node哥哥,一個被Bug耽誤了才藝的屌絲青年,這篇文章想跟大家聊聊Java的學習方法。
故事鍥子
話說這天,我在路上遇到3個人,巧了,都在書店門口排隊買最近很暢銷的那本《Java從入門到如土》。我決定上去搭訕一下。
我:哈嘍,三位同學,在買書呢?
三人同時翻來白眼:你瞎啊?
我:(有點尷尬的撓了撓頭)是這樣的,我在搞一個小調研,我想問問你們爲什麼學習Java啊?
中年大叔:咳咳,我先來說說吧。那肯定爲了生活,我要吃飯啊,學習Java肯定是指望着這玩意兒找個好工作啊,不說像大佬們那樣月入10w吧,月入1w混個溫飽總可以的吧。開玩笑,我上有80歲老母親,下有嗷嗷待哺的奶娃娃,我一手代碼,一手抱娃容易嗎?我老婆總跟我吵架,說我加班太晚,說我週末不陪她,懷疑我外面有小三,說我錢沒掙多少頭髮掉了一半,說我…(此處省略1萬字吐槽)甚至揹着我開始在外面跟產品經理勾搭了…爲了我們的家,我只能裝作沒看見…我太難了!
說着說着,這哥們哽咽了…
我只能忙去安慰:額,好了好了,兄弟,生活很難,我懂你的辛苦!
戴耳機的小哥哥:哎哎,老哥,先別哭,我感覺沒那麼痛苦吧…我學Java完全是個人興趣呢,我從高中就開始接觸編程,到現在學會了C、C++、GO、Java、Python這些語言,感覺Java在服務器編程方面還是很優秀的,我自己的博客網站就是用Java搭的,哈哈,很方便也很穩定呢,現在日訪問量已經破千了哦…
我:哇,小哥,你好優秀啊,能不能帶帶我…
小哥:emmm…
踩滑板的小姐姐🍉:其實我是計算機專業的,我對開發語言不怎麼會,也不怎麼感冒,但是老師佈置了作業,用Java做一個學生課程管理系統,這可難倒我了,我不會啊…我只能厚着臉皮去隔壁學校找學長指導指導我,話說學長真的很棒耶,聲音好聽,人也非常耐心,關鍵長得超帥的,哇…好喜歡!我以後的男朋友必須是學長這樣的!
我:呃…這位小姐姐,咱們是不是有點跑題了…
小姐姐🍉:(翻了個白眼)懶得理你,一看你就是屌絲
我:好吧,那話說回來,各位都要學Java,那怎麼學好Java?
大叔:(用T恤擦了擦眼角的淚痕)我覺得吧,是這樣,我學Java不圖學什麼原理,什麼設計模式,什麼底層算法數據結構,我只求能儘快學會,讓我能找個工資更高的工作。現在的產品經理天天吊我,搞我,動不動給我提需求,還上綱上線的,給我倒排時間,5天的開發量2天做完,還得兼職測試、運維,累死累活的上線了,出BUG鍋都是我揹着,我太難了…說完又哽咽了…
我只好慌忙再安慰大叔…
小哥哥:我感覺吧,Java是一門面向對象的語言,需要有面向對象的思維,Java裏的對象完全可以映射我們的現實世界。一輛車就是一個實體類,我們叫Class Car,車有很多的屬性,比如顏色、價格、長、寬、高、品牌等等,這些就構成了車的一個基類,用Java語言描述出來。然後我們通過 new Car() 的方式創建這個類的一個個對象,再去設置屬性,比如顏色設置成白色、紅色、綠色等等,這樣每個對象就非常獨立了。
我:嗯,說的有道理,小哥果然厲害。通過剛纔小哥的描述,我總結了下小哥哥的學習方法。就好比我是一個小白,我想學習Java的面向對象,但是我不理解,那麼我就從身邊出發,先了解我們所處的世界中的元素,然後通過我們的世界去對照Java,理解Java裏的類和對象,比如一個人就是一個對象 Person,然後人可以吃東西,就是 person有一個eat方法,吃什麼就可以是一個參數類Food傳遞進來,food有名稱等屬性,可以看下代碼的描述:
class Person {
// 姓名
private String name;
// 年齡
private String age;
// 住址
private String address;
private void eat(Food food) {
System.out.println("吃食物:" + food.getName())
}
}
/**
* food類
*/
class Food {
private String name;
...
public String getName() {
return this.name;
}
}
小姐姐🍓:我好像懂了,面向對象就是把我們需要解決的問題從現實世界抽象成Java類,比如我想訂外賣,那麼就有我(顧客)和外賣兩個類,我訂外賣,就是Customer 裏面有個order方法,參數是外賣。大概是這個樣子的:
class Customer {
// 姓名
private String name;
// 年齡
private String age;
private void order(Waimai waimai) {
System.out.println("我訂了外賣:" + waimai.getName())
}
}
/**
* 外賣類
*/
class Waimai {
// 外賣名稱
private String name;
// 價格
private Double price;
...
public String getName() {
return this.name;
}
}
我:哎,對對,就是這麼理解的,面向對象其實在初學者看來有點抽象,難以理解,但是我們剛纔這麼一討論,是不是概念清晰多了?
小姐姐🍒:嗯,確實懂了一點點…
我:哈哈,其實我們剛纔討論的這些呢,可以引用一個非常經典有效的學習方法,叫費曼學習法
大叔:(突然止住了哭泣)啥?什麼東東?
我: 費曼學習法 是一種【以教爲學】的學習方式。你看剛纔小哥哥給我們講面向對象,在把我們將明白的同時他也對面向對象理解的非常深入了。這樣的一個學習方法呢能夠幫助你提高知識的吸收效率,真正理解並學會運用知識。
這個學習方法其實很簡單,就是驗證你是否真正掌握一個知識,看你能否用直白淺顯的語言把複雜深奧的問題和知識講清楚。
大叔:哦,顯得很不感興趣…(繼續傷心痛苦地抽泣…)
小哥哥:這樣啊,哈哈,其實我自己沒意識到這個學習方法,我就是按照我自己的理解說出來了,嘿嘿…
我:哈哈,每天一個Java小技巧,你學廢了嗎?
文末,再給大家放送一個福利。
《Effective Java》是Java程序員必看的一本書神書,號稱Java四大名著之一,但隨着Java 8,9, 10 ,甚至11的發佈,Java語言發生了很多的變化。之前的第二版有些內容已經不太適用了。
這本書第第三版的英文版已經於去年發佈,在發佈後,便有程序員開始翻譯其中文版,目前所有章節均已翻譯完成,目前已經開放閱讀及下載。
掃一掃下方我的微信二維碼,加我微信,我把資料免費發給你哦~
喜歡Java,熱衷學習的小夥伴可以加我微信: xia_qing2012,大家一起學習進步,成爲大佬!
創作不易,您的點贊和關注是對我最大的支持٩(๑❛ᴗ❛๑)۶
↓↓↓