技术文章

自学java应该怎么样才能学得比较好?

Java已经不仅仅是一种语言,更多时候是一种“环境”和“生态链”,这也导致了很多初学者,会发现Java类的书籍浩如烟海,从而变得无所适从。

显然的,学习通过Java如何来开发一个Android应用,和学习如何来完成一个基于Java的服务器端的业务处理,是根本不同的两件事情。

所以,学习Java,第一要做的事情,就是想清楚:

从哪个生态链入手

当然,如果你问我的意见,那么,我建议如果你没有其他的特别的目标,那么从控制台应用的开发入手,还是最合适的,原因无他,相对更为复杂的服务器端和Android应用端等方面的编程而言,控制台应用所需要的其他背景知识,基本等于0,相关的部署和测试环境也极易搭建,非常有利于初学者的学习。

至于在开发IDE方面,我则推荐使用VS Code,只需要简单的在其下安装微软VS Code针对Java编程所开发的核心插件Java Extension Pack,就可以开始愉快的进行相关的编程学习和实践了。

语法怎么学

在确定了相应的生态链后,下面要规划的,就是所学习的内容了。一口吃不成一个胖子,这个道理,到哪里都适用,在软件编程领域尤是,今天入门,明天大师的奇迹,不会发生在你身上。

自学java

回到Java的编程,对于初学者而言,首当其冲的,自然就是Java的语法,在这里,我个人建议的两个基本学习原则是:

(1)越粗线条越好

甚至是如果你有在其他语言方面的充足的编程经验的话,很多方面略过都行。如果没有,则应该去尽可能的找一个写的最简单的教程,或者写的最简单的书来读。

 

这方面,其实好的书/教程不多,基本上,大部分书,也许是真心为了读者好,也或者是有他们自己的想法,或多或少的夹带了一些私货,这里循例的介绍两本,应该说写的都还算简洁。

《像计算机科学家一样思考Java》

原书本身为开源模式,图灵上有一个基于2008版本所翻译的中文版,如果你英文基础较好,直接看最新的英文版也行,否则,看这个中文版也可以,其实差别不大,英文版的名字叫:《Think Java: How to Think Like a Computer Scientist》

全书适合没有任何编程经验的人来阅读,当然,整个语法体系比较老旧,但还是很适合初学者入门Java语法的。

《写给大忙人看的Java SE8》

如果你有在其他语言下开发的经验,那么,这本书我觉得最适合你了,没有多余的废话,直接从lambda编程入手,让你快速的可以跟上当前Java在语言层面的一些最新进展。

当然,结合你自己的“生态链”,有些章节你也可以选择性无视,比如:讲JavaFx的一章。

另外,实际上,作者Cay S. Horstmann写了一系列的以《写给大忙人...》为特色的Java书籍,很多都值得看,但这本的确是其中最“精简”的一本。

(2)不求甚解:少问为什么,多想怎么用

在整个语法学习期,我的第二个建议,就是这4个字:不求甚解!Java支持很多的编程范式,即便就算是OOP,对于初学者而言,可能其中的一些部分,像多接口继承等,并不是那么容易一下子就理解的,这时候,怎么办?

略过去就好!

这些东西,在你后期的编程开发过程中,有的是时间去打磨和理解,对于初学者,很多语言上的现象,你有那么一个基本的印象就行了。

随便的举一个例子,比如说,对于像控制台(console)那样的应用,Java总是暴露了一个public static模式的main函数作为入口函数,那么,为什么一定要是static的?能不能不用main?当不用main时,在不同版本的JDK下表现是否相同?以及在Java的其他应用,比如Android软件开发中,为什么又找不到这样的一个main了?

等等等等,如果你深究下去,那么,我相信,这些细节,是最终会让如初学者你奔溃的。

相反,如果你不问为什么,仅仅将这些,就当作一种特别的“在某种应用场合下的规范”来吸收,其实会更加有利于你去更为快速准确的建立起整个语言系统来。

不要急着写“大型”系统

编程学习需要大量的练习,这是一个毋庸置疑的事情,但写什么,却是很多初学者非常疑惑的地方。还是如我开始所写的,因为Java早已不是一种纯粹的语言,因此,大部分实际的应用,对于初学Java的人来说,构建相关的生态链的过程,甚至其难度并不比语言来的小。

自学java

比如,光光是一个项目构建工具,Ant/Maven/Gradle,就各擅其长,足够让初学者感到头大和无所适从,这些是Java学习中必须要学的么?

如果你问我,那我的回答是:是,因为这一切都是在整个工程量变得巨大,构建本身成为了一个问题后,整个业界所给出来的答案,并且也成为了业界的标准。

但是,这里要说但是,初学者其实根本感受不到这些,因此,即便他们费心劳力的学习了这些,也不见得能够记住和用上多少。

因此,对于初学者而言,当你完成了基本的语法训练后,我的建议是:

不要急于跳入到这些具体工程工具和类库的泥淖之中,而是应该继续进行一些小型的“代码”级别的阅读和练习,来巩固自己在纯Java语言方面的基础。

特别的,我觉得如果可能,应该尝试着去阅读一些代码量不大的项目,在理清这些代码的核心功能实现之余,适当做些笔记,将代码中一些优秀的部分摘录出来,反复的赏玩,其实是提高自己编程能力的最佳捷径。

毕竟,别忘了:

计算机语言也是语言

因此,在文学作品赏读中的相关方法,用在计算机语言学习上,也是合适的。这方面,网络上的资源不少,但讲解这些代码的人不多,我倒是有心,今后在工作之余,对此进行一些相关的整理,希望可以对初学者有所帮助吧。