二哥,我是一名大学生,专业是电力工程,但想自学 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 基础语法javaboy4096
Java 面向对象javaboy6148
深入面向对象和数组javaboy8200
Java 常用类详解javaboy4105
Java 集合与数据结构javaboy2062
Java 数据结构和算法javaboy6184
Java IO 流全解析javaboy8209
Java 网络编程javaboy6166
Java 异常机制解析javaboy6157
深入理解 Java 多线程javaboy4114
手动开发一个 Web 服务器javaboy2071
独立开发 SORM 框架javaboy8227
深入理解 Java 注解+反射javaboy8218
Java 23 种设计模式javaboy4123
学会 Java 正则表达式javaboy6175
JDBC 详解javaboy2080
深入理解 Java 虚拟机javaboy2089
Java 解析XML文件javaboy8236
IntelliJIDEA 视频教程javaboy4285
Java 编程规范javaboy4222

除此之外,我再推荐一门免费的公开课《老九零基础学编程系列之 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 基础了。如果你在学习的过程中遇到问题,也欢迎随时和我交流。切记,要坚持,三天打鱼两天晒网只会打不到鱼还会弄破了网。

https://github.com/itwanger/JavaBooks