序言
最近自己订下了一个宏伟的目标-一周读一本书。而读书最为重要的就是践行,对于暂时没有办法践行的,教就是最好的学。分享也是一个不错的方式,这个系列的博客也是一种分享了。
章节目录
因为我还没有研读每章,所以每个章节下面的注解实际是我对书本内容的预测,也就是如果我写这个章节,可能会组织哪些内容。所以肯定和实际的内容是有出入的,等我完成每一章之后,会回过头来更新这部分的内容。
第一章 引言
引言这部分,作者主要介绍这本书的由来,为什么写这本书?这本书涵盖哪些内容?这本书和其它的Java书籍有哪些不同?这本书的读者应该是谁?读者应该怎么阅读这本书?读这本时的注意事项。
第二章 创建和销毁对象
这章的关注点是对象,所以作者首先应该介绍Java里面对象的重要性,然后我们编程的过程中,对于对象的使用有哪些误区,没有意识到哪些盲点,然后结合Java JVM的垃圾回收机制,给出我们使用对象的建议。
第1条:考虑使用静态方法代替构造器
第2条:遇到多个构造器参数时要考虑用构建器
第3条:用私有构造器或者枚举类型强化Singleton属性
第4条:通过私有构造器强化不可实例化的能力
第5条:避免创建不必要的对象
第6条:消除过期的对象引用
第7条:避免使用终结方法
第三章 对于所有对象都通用的方法
对于所有对象都通用的方法?这个会是什麽呢,暂时猜测不到。
第8条:覆盖equals时请遵守通用约定
第9条:覆盖equals时总要覆盖hashCode
第10条:始终要覆盖toString
第11条:谨慎地覆盖clone
第12条:考虑实现Comparable接口
第四章 类和接口
类和接口是Java里面非常重要的概念。Java里面的类是单继承,但是却可以实现多个接口。这章估计是比较类和接口的异同点。以及两个概念的优缺点。
第13条:使类和成员的可访问性最小化
第14条:在公有类中使用访问方法而非公有域
第15条:使可变性最小化
第16条:复合优先于继承
第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
第18条:接口优于抽象类
第19条:接口只用于定义类型
第20条:类层次优于标签类
第21条:用函数对象表示策略
第22条:优先考虑静态成员类
第五章 泛型
首先简单介绍泛型,泛型是什么?怎么使用泛型?泛型是为了解决什么问题而被实现的?泛型被应用在了哪些地方?泛型还可以被用在哪些地方?泛型使用过程中的优缺点,如何规避这些优缺点?
第23条:请不要在新代码中使用原生态类型
第24条:消除非受检警告
第25条:列表优先于数组
第26条:优先考虑泛型
第27条:优先考虑泛型方法
第28条:利用有限制通配符来提升API的灵活性
第29条:优先考虑类型安全的异构容器
第六章 枚举和注解
首先应该会介绍枚举和注解的定义,为什么Java中会出现这两个概念,是什麽时候被引入到Java里面,怎么使用它们,使用它们的时候应该注意什么。这两个技术概念的优缺点。
第30条:用enum代替int常量
第31条:用实例域代替序数
第32条:用EnumSet代替位数
第33条:用EnumMap代替序数索引
第34条:用接口模拟可伸缩的枚举
第35条:注解优先于命名模式
第36条:坚持使用Override注解
第37条:用标记接口定义类型
第七章 方法
这是一个编程语言里面的非常重要的概念。对于一个对象而言,方法就是这个对象的行为。Java里面的方法会有什么特别的地方呢?重写?重载?多态?Java里面方法的定义和使用有没有什么特别的地方呢?
第38条:检查参数的有效性
第39条:必要时进行保护性拷贝
第40条:谨慎设计方法签名
第41条:慎用重载
第42条:慎用可变参数
第43条:返回零长度的数组或者集合,而不是null
第44条:为所有导出的API元素编写文档注释
第八章 通用程序设计
通用二字可以看出,这个章节时介绍编程的一些基本的建议,很可能会设计编程的各个方面,搞不好连编码的规范,变量的命名规则都会被包含进去。会对Java里面的变量,循环,对象等都会做一个建议。搞不好这些建议还可能会适用于其他的编程语言。
第45条:将局部变量的作用域最小化
第46条:for-each循环优先于传统的for循环
第47条:了解和使用类库
第48条:如果需要精确的答案,请避免使用float和double
第49条:基本类型优先于装箱基本类型
第50条:如果其他类型更合适,则尽量避免使用字符串
第51条:当心字符串连接的性能
第52条:通过接口引用对象
第53条:接口优先于反射机制
第54条:谨慎地使用本地方法
第55条:谨慎地进行优化
第56条:遵守普遍接受的命名惯例
第九章 异常
说一句大话,万物运行皆会有异常,异常的处理非常的重要。能够预测到的异常,本质上并不是异常,因为我们可以控制这种异常,这时的异常也是一种场景而已。Java里面的异常机制有什么特别的呢?有什么需要注意的呢?怎么使用会更有效率呢,更加可读呢?
第57条:只针对异常的情况才使用异常
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常
第59条:避免不必要地使用受检异常
第60条:优先使用标准的异常
第61条:抛出与抽象相对应的异常
第62条:每个方法抛出的异常都要有文档
第63条:在细节消息中包含能捕获失败的信息
第64条:努力使失败保持原子性
第65条:不要忽略异常
第十章 并发
并发是一个非常重要的特性,就是这个特性可以使Java支持多线程的工作,这是可以提高程序执行效率的非常重要的特性。那么Java里面的并发有没有使用的重灾区呢,开发人员使用并发的时候有没有需要特别注意的呢,怎么提高并发的使用效率呢?