如何快速打好 Java 基础?

2020-02-12 09:50:37 +08:00
 cmower

二哥,我是一名大学生,专业是电力工程,但想自学 Java,如何快速打好基础呢?

微信上 tison 向我提出了这个问题。我想我是有资格来回答的,从北京奥运会那年开始学 Java,到现在已经有 10 多个年头了,真的是从一名编程白痴一步步走到现在的。

我在各大技术网站上分享了不少 Java 方面的原创文章,不知道影响了多少初学者,反正文章的留言中经常能看到他们由衷的感谢。现在每天仍然有不少同学( tison 是其中之一)加我微信,问我怎么一路过来的,希望能够把宝贵的经验分享出来,让他们少走一些弯路。 借这个机会,就统一回答下。

既然要快速,咱就没法面面俱到,必须挑重点、讲实用。下面就根据我的实战经验,谈一谈具体的学习过程。

01、准备

学习之路是一项很逆人性的差事,并不是每个人都能够坚持下来,尤其是打基础的阶段,过于强求的话可能就会适得其反,没入门先放弃了。

1 )对 Java 感兴趣,对互联网的高薪感兴趣,对“程序员秃顶”的段子视若无睹,只有这样,你才能真正地坚持下去。

2 )富有坚韧不拔的学习能力,别总遇到一点点困难,就自暴自弃。

3 )设定一个目标就死磕,如果你经常拿不到最终结果,需要反思是不是从来没有成功做成过一件困难的事情,没成功过所以不知道“坚持”可以大大提高成功的概率。

4 )拥有解决问题的勇气,学习的过程中注定会遇到许许多多的坑,要敢于跳进去,然后再爬出来,并且是在不寻求他人帮助的前提下。我见过太多的同学,遇到点屁大的问题就直接扔在群里等大牛解答,殊不知搜索引擎是第一步。

02、书籍

高尔基曾说过:“书籍是人类进步的阶梯。”这是至理名言,打 Java 基础的过程中必须要耐着性子去读完两本书:《 Head First Java 》和《 Java 核心技术卷一》。

上大学那会,老师要求我们读的入门书是《 Java 编程思想》,这本书确实值得读。但是很可惜,那时候我实在是看不懂,硬着头皮上也看不懂,感觉在看甲骨文一样。10 多年过去了,如果让我来推荐 Java 入门书的话,我不会推荐这本。

《 Head First Java 》是一本非常有趣的书,作者挑选的插图可以说张张经典,真正实现了“图文并茂”的需求,搞得你感觉有点不好意思,仿佛不是在读一本技术书,而是在读《知音》。

不只是图片,还有游戏、拼图、解谜题以及你意想不到的内容。真的是一点都不“正经”,正因为如此,阅读起来才会感觉兴趣盎然嘛。

《 Java 核心技术卷一》虽然没有《 Head First Java 》那么趣味化,但广度和深度都恰到好处。这两本书虽然都比较厚,但读起来并不会觉得头大,因为都算是通俗易懂的入门书。我建议你把书中的实例都在电脑上跑一遍。有些内容看不懂的话,就先跳过,不要钻牛角尖。这样下来,粗略的估计,需要 2 个月的时间。

最好的话,每读完一章,接写一篇笔记出来,所谓好记性不如烂笔头,在写作的过程中,为了能够把一个知识点说明白,你不会不自觉的学习到更多扩展的内容,理解也会随之加深。这些笔记就好像你在学习过程中的荣誉勋章,以后再回看的时候,也会觉得学习的日子过得很充实。

02、视频

可能你更喜欢看视频教学,那么我也为你精心准备了一些。这些视频我已经分门别类了,需要的话可以关注我的公众号 [沉默王二] ,按照下面的口令清单回复即可获取。

除此之外,我再推荐一门免费的公开课《老九零基础学编程系列之 Java 入门》,网易云课堂上可以直接观看。主讲人徐嵩的授课风格非常风趣,听起来很过瘾,我最近没事的时候就看一集,回味一下当初学 Java 时没有视频资料的苦涩。

看视频和看书的体验完全不同,在我看来,通过视频学习的好处主要有两点:

03、Spring

Spring 目前在 Java 开发中占据了重要的一环,可以说是密不可分。毫不夸张的说,不会 Spring,绝对算不上一名合格的 Java 开发人员。Spring 的核心概念是 IOC (控制反转)和 AOP (面向切面编程),这两个概念掌握了,再学习 Spring 的其他衍生项目就会容易许多。

学习 Spring 的入门书,我推荐《 Spring 实战》,这本书学起来很快,并且书中提供的案例都很容易上手,顺着敲一遍。Spring MVC、Spring Boot、Spring Cloud 是工作当中最常用的三块内容,几乎每一个成熟的正式项目都会用到其中之一,所以很有必要再花 2 个月的时间去入门一下。

04、其他知识

要想学好 Java,还有一些知识需要掌握,比如说 MySQL、MyBaits,只有和数据库打通,才算是打通了任督二脉。学习 MySQL 的话,推荐《高性能 MySQL 》,很经典的一本书;学习 MyBaits 的话,直接看官方文档就够了。算下来的话,还需要再花 1 个月的时间入门。

05、实战演练

花了 5 个月的时间好不容易入了门,接下来就需要一个实战项目巩固下。这里我推荐好朋友江南一点雨的《微人事》,GitHub 上已经开源,搜索关键字“vhr”即可。这个开源项目很容易上手,文档也很全面,目前标星已经 1 万多了,非常受欢迎。

这个项目学下来,预计还需要 1 个月的时间,你已经算是一名合格的 Java 程序员了。

06、犯错犯错再犯错

一定要敲代码,在敲的过程中肯定会出错。不管你是在看书,或者文章,还是视频,你觉得作者说得好像挺简单的,以为看过一遍后自己也理解了。当往往不是这样的,程序在敲的过程中会发生许许多多意想不到的问题,有时候作者限于篇幅的原因,往往会选择性地跳过一些细枝末节,但这些对于编程的初学者来说,往往很难驾驭。只有经过自己的手敲出来,才能证明真的是会了,懂了。

不是有那句俗话嘛,“当局者迷旁观者清”,如果你站在读的角度,就会很容易自欺欺人;但如果自己亲自实操的话,就完全不一样了,不仅印象深刻,还为以后的复盘做好了备份。在敲的过程中,最好把自己认为经典的案例分门别类,放到 GitHub 上或者码云上,等到以后再用的时候,也好找——书到用处方恨少,代码也是。

出错了没关系,把错误解决掉的过程中你能听到自己成长的声音,就好像雨后春笋一样。没有出错的同学要么是天才,要么就是蠢材(复制粘贴)。

07、最后

按照我说的方法,顶多半年时间,就可以打好很坚实的 Java 基础了。如果你在学习的过程中遇到问题,也欢迎随时和我交流。切记,要坚持,三天打鱼两天晒网只会打不到鱼还会弄破了网。

怎么样?这篇文章绝对值得点赞和收藏吧?赶紧行动起来!

5586 次点击
所在节点    Java
21 条回复
magiclz233
2020-02-12 09:54:33 +08:00
真的,这里面也没多大的流量,别来发广告了
lovedebug
2020-02-12 09:55:34 +08:00
写个项目就懂了,比看这么多视频有用
lovedebug
2020-02-12 09:55:45 +08:00
go/推广
gavinjou818
2020-02-12 10:41:23 +08:00
。。。你确定直接上 spring 实战?我总感觉新手不友好啊。。总感觉这些推荐都是网上的模板。
AEANWspPmj3FUhDc
2020-02-12 10:48:40 +08:00
用提问的方式推广公众号???
AEANWspPmj3FUhDc
2020-02-12 10:50:47 +08:00
@gavinjou818
全网推荐的书就这几本,重点是他在发广告,推广他的公众号
leonard916
2020-02-12 11:00:45 +08:00
@lovedebug 分人吧。有的人知其然不知其所以然,有的人就能理解邏輯並舉一反三。
LongV2
2020-02-12 11:38:48 +08:00
推广推到这里来了?疫情影响这么大吗
gowk
2020-02-12 11:39:00 +08:00
不喜欢 block 就好了,感觉楼主写的都挺实在的,虽然是推广公众号吧
arjen
2020-02-12 11:42:55 +08:00
看见广告就头疼。说实话,v2 里有几个不会的...
tt67wq
2020-02-12 11:59:45 +08:00
thisisgpy
2020-02-12 12:07:56 +08:00
没钱治肺炎了?跑这里割韭菜
huntcool001
2020-02-12 12:51:28 +08:00
呵呵,这里的人不需要你这种推广
yamasa
2020-02-12 16:01:50 +08:00
卖你 m 的课呢?
sumarker
2020-02-12 16:13:17 +08:00
自问自答?
行吧……
jnduan
2020-02-12 17:46:17 +08:00
“在敲的过程中,最好把自己认为经典的案例分门别类,放到 GitHub 上或者码云上,等到以后再用的时候,也好找——书到用处方恨少,代码也是。”

传说中的面向复制粘贴编程?
AtlantisZ
2020-02-12 17:47:49 +08:00
滚蛋
wysnylc
2020-02-12 19:16:31 +08:00
在这推广不是找骂吗
8a9a09dw12
2020-02-12 20:43:03 +08:00
guolaopi
2020-02-12 20:59:59 +08:00
推广完公众号关注完了天天看你卖别人的课?
感觉程序员三个字被侮辱了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/643940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX