大家好,我是二哥呀。昨天收到一条读者的私信:“他 01 年的,高中毕业就参加工作了,本来是要上大专的,但家里出了状况就没去成,有 Java 的基础,问我还要不要继续学?”
说实话,收到这样的私信,我的内心是五味杂陈啊,太不容易了,兄弟!如果换做是我,可能早就自暴自弃了。
然而这位读者心里仍然怀揣着软件开发的梦,虽然连大专都没得上,但他仍然坚持在网上学习 Java,就冲这份对对待生活的心气和勇气,我就必须得给他足够多的帮助。
我想,给他整一份完整的 Java 学习路线吧,让他继续坚持自己的梦想,也许等他工作攒了一些钱后,再报成人本科升级一下学历,就能找到一份他心心念念的软件开发的工作吧。
00、前言
虽然我是科班出身,但说实话,十多年走过来,无论是 Java 语言本身,还是它配套的工具和框架都发生了巨大的变化。我自己也是一路学习新的知识,一路丢掉废旧的知识。
现在回头来看,发现自己也走了不少弯路,浪费了不少时间,真的是既遗憾又叹息!
关注我的读者当中应该有很大一部分是 Java 初学者,因为是初学,所以面临着巨大的压力,不能付出太高的试错成本。而应该寻找一条更高效的学习路线和一套行之有效的学习方法,否则一不小心,很可能会前功尽弃。
但好在 Java 的学习资料非常丰富,只要我们稍微用心去整理下,就能找出一条高效的学习路径。过去这两年里,我不断地整理自己的思路,分享了不少关于 Java 方面的文章,但都过于分散,借这个机会,我打算重新梳理一遍,希望能对大家的学习有所帮助。
01、学习Java之前可以先学一下C语言
对于科班的同学来说,我建议在学习 Java 这门编程语言之前,学一下 C 语言。我上大学那会,教材用的是《Java 编程思想》,但说真的,这本书对初学者并不友好。
编程语言都是相通的,C语言作为 Java 语言的母胎,还是非常值得科班去学习一下打打基础的。其实对于我们程序员来说,学的是计算机科学,而不是编程语言,语言只是工具,没有优劣。像我,就学过 Java、C 语言、Ruby、JavaScript 等等这些编程语言,他们之间确实有很多相似之处。如果学过 JavaScript,能很容易搞懂 Java 的 Lambda 表达式。
C 语言的特殊性就在于它可能是唯一一门最适合来学习一系列计算机基础的媒介,比如 Linux 操作系统,就是用 C 语言重构的;比如计算机网络,里面有很多网络协议,有不同的 header 定义,这些字段用 C 语言的 union 和 struct 来操作非常便捷。Java 中虽然剔除了指针这种烦人的东西,但说白了,引用其实和指针差不多,理解了 C 语言中的指针,就能很好的理解 Java 中的引用。
当然了,由于 C 语言的抽象程度更高,学起来也需要花费一番功夫。对于科班的初学者来说,我推荐翁恺教授的 C 语言程序设计。
B 站地址:https://www.bilibili.com/video/BV19W411B7w1
喜欢看书的同学我只推荐一本,《阮一峰老师的 C语言入门教程》,我第一时间就拜读了一遍,受益匪浅!可以说目前我见到的最好的 C语言入门教程了,没有之一!
我第一时间就整理了一份 PDF 版的,需要的小伙伴可以戳下面的链接获取下载链接