《Java编程思想(第4版)》读书笔记

2020-06-06  

为什么看这本书?

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();
  • 并发这块,没啥可说的,书中已做推荐。

  • 我最近处理一些复杂的问题,看到书中提到了一个观点"让简单的事情变得容易,让困难的事情变得可行",很有感触。思从深而行从简,真正的高手能云淡风轻地用最简单的方法解决最复杂的问题。啥时候能把困难的事情,做到简单易用,就能找到成就感了。
     

ConstXiong 备案号:苏ICP备16009629号-3