自学Java,自学最怕的自学不是看不懂代码,而是自学被烂书带进沟里。我见过太多人抱着《Java编程思想》啃了三个月,自学最后连个Hello World都跑不起来——不是自学书不好,是自学那本书压根不是给新手写的。它更像一本字典,自学适合你写了两年代码后再回头查概念。自学
真话是自学,入门阶段你只需要三本书,自学顺序对了,自学事半功倍。自学
第一本,自学《Head First Java》。自学别嫌它画风幼稚,自学那些插图和对话式讲解救过无数人的命。我当年在自习室看这本书,旁边同学以为我在看漫画,凑过来才发现是编程书。它最大的优点是把抽象概念具象化——比如用披萨店比喻对象,用烤炉比喻方法调用。你会笑着学会封装、继承、多态,而不是对着黑底白字的终端发呆。唯一的缺点是例子太啰嗦,但忍忍就过去了。
啃完这本,你就能写点小游戏、简单管理系统了。这时候别急着进阶,先找个需求动手做。我当时给自己定的目标是写个记账软件,丑得要命,但跑起来那一刻的成就感,比看十本书都管用。
第二本,《Effective Java》。别被书名吓到,它不是给资深工程师的,而是给所有想写出“能看代码”的人。里面讲的全是坑——怎么比较对象、怎么处理异常、为什么别用String拼接大量数据。每个条目都短小精悍,像编程界的《菜根谭》。你写半年代码后遇到的很多“怎么这么别扭”的问题,这本书早就给了答案。我印象最深的是“优先使用接口而非抽象类”这一条,看完直接重构了我当时写的屎山代码。
第三本,不是书,是官方文档。Oracle官方的《Java Tutorials》免费在线版,比任何二手转述都准确。你可能觉得看文档枯燥,但当你遇到问题去搜索引擎查的时候,最靠谱的结果永远是官方文档或者Stack Overflow。提前学会读文档,相当于给自己装了个外挂。
有人会推荐《Java核心技术卷I、卷II》,说这是经典。我不否认它全面,但问题恰恰在于太全面。自学的人没有老师划重点,很容易陷进那些你暂时用不上的细节里,比如Swing图形界面、网络编程底层原理。你明明想做一个网站后端,却花两周研究怎么用Java画图表,这不是学习,是自我消耗。
还有一类书要特别警惕——各种《XX天精通Java》。那些书本质上是把API文档翻译成人话,然后堆一堆代码片段。你看完觉得自己会了,一合上书,连个文件读取都写不利索。编程是手艺活,跟学自行车一样,光看说明书永远学不会,必须摔几跤、蹭破皮才能找到平衡感。
我的建议是,把买书的预算砍一半,留出钱来买个好点的键盘。书读三本足够,剩下的时间全用来写代码、读别人的代码。GitHub上随便找个开源项目,读它的源码,比任何进阶书都管用。你会在里面看到真实世界的Java长什么样——不是教科书里那种规规矩矩的类,而是充斥着各种设计模式、性能优化和妥协的活物。
最后说个反常识的:等你写了两年Java,再回头翻《Java编程思想》,你会发现它突然变得好读了。那时候你会感谢自己当年没硬啃,因为有些书需要经验做铺垫,就像有些菜需要年龄才能品出味道。自学这条路,书是地图,但路得自己走。选对三本,比囤三十本有用得多。