为什么看这本书?
Java 四大名著之一,看完《Effective Java》自然想看下这本书。
书的整体情况
900 多页,书中的内容都是 Java 编程语言中的重难点集合。读完本书,花了两个星期, 10 几个小时。
书提到了这些知识模块:
- 类与对象
- 操作符
- 执行流程的控制
- 初始化与清理
- 访问权限控制
- 复用类
- 多态
- 接口
- 内部类
- 对象持有与清理
- 异常处理
- 字符串
- Class类与对象的介绍
- 泛型
- 数组
- 容器
- I/O
- 枚举
- 注解
- 并发
- GUI
适合阅读人群
这本书不适合零基础入门的朋友看。原因很简单,一上来就看一门编程语言的重难点知识,要么记不住,要么理解不了。
有一定开发经验的 Java coder,看了应该会有所收获。
最大的感触
- 好书,还会二刷、三刷、四刷的书。示例代码丰富,见解深刻。
- 一开始我以为这本书应该跟《Effective Java》差不多,抱着应该很快能看完的心态就开始了。结果不是那么回,看着看着发现它里面都是 Java 的重难点,想看懂一点都不轻松。
- 书中提到了很多原理性的问题,并且多处与 C++ 等其他语言实现相同功能的对比,列出了好坏。在 Java 中能看到很多 C++ 的影子。
- 泛型这章,让我印象深刻,尤其提到了 Java 为了保证移植性,是基于类型擦除实现的泛型,这种实现方式带来了很多限制。如在编码过程中,T 就可以理解为一个 Object,无法显式地调用 T 里面的方法;C++ 可以。
- 写代码要有种极客精神,追求那种极致。比如 Java 5 之前是没有枚举的,对于 Java 语言本身的发展是没有什么阻碍的,但是有了枚举,就可以更加优雅干净地解决问题。还吸收了一些枚举内置的方法,如何随机获取一个枚举类型。
- 书中讲了很多 Java 限制,如注解不支持继承、枚举不支持继承。以及这些限制对比其他编程语言,带来好处与不足。
- 书中也谈到了性能优化,写了测试代码,通过结果给出了使用建议:不同容器适合的不同场景、对象创建销毁带来的性能影响、类的自动拆装箱带来的性能影响等...
- GUI 这块,提到了 awt 的槽糕设计,也赞了一下 swing,applet 基本也废弃了。我个人观点是能用 swing 开发出自己想要的小工具足矣,企业中已基本不用这块技术。书中提到 Swing 天然支持键盘导航,我才知道我喜欢多年这个功能叫键盘导航,就是在软件内不用鼠标可以完成所有操作。
- 看到并发这块,让我想到一些问题,如何停掉一个线程?何谓阻塞?如何优雅停?如何强制停?如,如何让下面线程停下?
new Thread(() -> {
while(true) {
}
}).start();
- 我最近处理一些复杂的问题,看到书中提到了一个观点"让简单的事情变得容易,让困难的事情变得可行",很有感触。思从深而行从简,真正的高手能云淡风轻地用最简单的方法解决最复杂的问题。啥时候能把困难的事情,做到简单易用,就能找到成就感了。