近期在系统地梳理、重新学习Java的基础知识,发现很多东西值得记录下来,不仅是给自己提供一个思考备忘录,或许也可以帮到准备开始的你(希望如此)。
一,基础介绍
先介绍自己的学习基础吧。我的Java主要是从数据结构的课上习得的,读过 Head first Java,做过几个project。工作之后主要语言是Java,这也是为什么自己开始系地统学习Java。侠客行走江湖的时候都会有那么几件趁手的兵器或者是功夫,我想Java就是我行走代码江湖的兵器。所以,基础已经很好的同学就别浪费时间继续阅读了。
二, 学习路径介绍
说是路径,其实也不全是自己的原创,参考了很多资料,尤其是Hollis的Java成神之路。这篇文章基本上是基于我自己的情况对Hollis给出的学习路径的一个“继承”。Hollis的文章只给了一个学习的列表,并没有相应的学习材料。因此在Hollis文章的基础上,我添加了自己觉得必要的主题;同时在相应的主题下加入了我自己阅读的材料,包括书籍和他人的博客,同时给出了相应的链接。如果你打算全面学习Java的话,不妨先看看Hollis的这篇文章,一定能获得一些线索。同时,Hollis还有一系列的文章讲Java的基本知识,请点击博客链接拜读他的大作。学习的过程中,我主要是按照主题进行梳理,每次集中阅读一个主题,理解之后进入下一主题。参考的书主要有:
- Thinking in Java, 4th Edition (以下简称TIJ)
- Effective Java, 3rd Edition(以下简称EJ)
- 深入理解Java虚拟机 第二版
如果有人需要英文原版的TIJ和EJ的话,可以在评论里留下你的邮箱。
三,学习路径 (持续更新中)
1. Java对象
面向对象程序设计可以说是一种解决问题的方式,上升到哲学层面也不为过。个人认为在学习Java的时候理解OOP的基本概念是有非常大的帮助的。
- TIJ: Introduction to Objects
- TIJ: Everything Is an Object
- TIJ: Initialization & Clean Up
- TIJ: Reusing Classes
- TIJ: Polymorphism
TIJ这几章对Java OOP做了比较全面的介绍。之后我开始读EJ的第二章。
- EJ: Creating and Destroying Objects
EJ的第二章集中讲了如何创建对象、如何销毁对象,对下来获益匪浅,有时间应该会写一篇文章总结以下其中种种好的编程方法。可惜的是EJ的很多建议里边都没有相关的例子,很多时候要自己去找例子帮助理解消化。
2. 异常处理
异常处理看似无足轻重,实则不然。正确的异常处理不仅可以保持代码整洁,提高代码可读性,还可以提高大型软件系统的稳定性,同时为Debug提供log,便于锁定问题。
- TIJ: Error Handling with Exceptions
- Chained Exceptions in Java
还是把TIJ对每个主题的介绍当作入门了解,之后又继续阅读了EJ的第10章。
- EJ: Exceptions
EJ的第十章几乎提供了Java异常的所有用法,也提醒并列出了很多值得注意的不合理用法。当然问题还是一样:没有例子来佐证相应的建议。阅读的时候遇到了很多迷惑的地方,这里也列出一些解决自己疑惑的博客和StackOverflow上的解答。
- 什么是Unchecked Exception和Checked Exception
- 为什么直接抛出Exception是个不好的习惯(这里指的是Exception类本身,而不是其他异常,比如KeyException)?
3. Java String
4. Java IO
- TIJ: I/O
5. 枚举
- EJ: Chpater 6: Enums and Annotations
6. 泛型
- TIJ: Type Information
- TIJ: Generics
7. 序列化
8. 反射
9. Java Lambda
10. Java Stream
11. Java多线程
12. Java编码方式
13. Java正则表达式
14. Java反编译
四,共勉
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。