为什么看这本书?

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();


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

ps:最近面试题小程序又升了一版,把答案折叠筐、字体大小、题目序号、题目url复制等问题搞定了。欢迎细品!


更多相关文章

  1. Spring Ioc 实例化 Bean 对象有几种方式?
  2. Javascript面向对象入门
  3. 如何在 Java 中构造对象(学习 Java 编程语言 034)
  4. java创建对象的过程(内存角度分析)
  5. 一个Java对象到底占多大内存?
  6. 用 globalThis 访问全局对象[每日前端夜话0xF6]
  7. 什么是 Java 对象分配率

随机推荐

  1. Android 统计图表引擎 AChartEngine(三)
  2. [置顶] 博文收集
  3. Android 代码画角标 offcutView
  4. android 模块化
  5. Android(CM)源码国内镜像下载
  6. RecyclerView 各种相关问题解决方法
  7. android开关控件使用(一)
  8. Android Context详解
  9. Android UI 中 gravity 与 layout_gravit
  10. Android之ContentProvider源码解析