第一章         
        引言
        
    第二章         
        阐述何时以及如何创建和避免创建对象,如何确保对象能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清除动作

第1条
                    用静态工厂方法代替构造器
                第2条
                    遇到多个构造器参数时要考虑使用构建器
                第3条
                    用私有构造器或者枚举类型强化Singleton
                第4条
                    通过私有构造器强化不可实例化的能力
                第5条
                    优先考虑依赖注入来引用资源
                第6条
                    避免创建不必要的对象
                第7条
                    消除过期的对象引用
                第8条
                    避免使用终结方法和清除方法
                第9条
                    try-with-resources优先与try-finally
        
    第三章         
        阐述所有对象都通用的方法,如equals、hashCode、toString、clone和comparable.compareTo方法等

第10条
            覆盖equals时请遵守通用约定
        第11条
            覆盖equals时总要覆盖hashCode
        第12条
            始终要覆盖toString
        第13条
            谨慎地覆盖clone
        第14条
            考虑实现Comparable接口
        
    第四章         
        阐述作为Java语言的核心以及Java语言的基本抽象单元(类和接口)在使用上的一些指导原则,以设计出更加有用、健壮和灵活的类与接口

第15条
            使类和成员的可访问性最小化
        第16条
            要在公有类而非公有域中使用访问方法
        第17条
            使可变性最小化
        第18条
            复合优先于继承
        第19条
            要么设置继承并提供文档说明,要么禁止继承
        第20条
            接口优于抽象类
        第21条
            为后代设计接口
        第22条
            接口只用于定义类型
        第23条
            类层次优于标签类
        第24条
            静态成员类优于非静态成员类
        第25条
            限制源文件为单个顶级类

第五章

阐述在Java1.5发行版本中新增加的泛型

第26条
            请不要使用原生态类型
        第27条
            消除非受检的警告
        第28条
            列表优于数组
        第29条
            优先考虑泛型
        第30条
            优先考虑泛型方法
        第31条
            利用有限制通配符来提升API的灵活性
        第32条
            谨慎并用泛型和可变参数
        第33条
            优先考虑类型安全的异构容器

第六章 
        阐述在Java1.5发行版本中新增加的和注解

第34条
            用enum代替int常量
        第35条
            用实例域代替序数
        第36条
            用EnumSet代替位域
        第37条
            用EnumMap代替序数索引
        第38条
            用接口模拟可扩展的枚举
        第39条
            注解优先于命名模式
        第40条
            坚持使用Override注解
        第41条
            用标记接口定义类型

第七章 
        讨论在Java 8中新增的函数接口、Lambda表达式、方法引用,以及处理数据元素序列提供类库级别支持的Stream API

第42条
            Lambda优先于匿名类
        第43条
            方法引用优先于Lambda
        第44条
            坚持使用标准的函数接口
        第45条
            谨慎使用Stream
        第46条
            优先选择Stream中无副作用的函数
        第47条
            Stream要优先用Collection作为返回类型
        第48条
            谨慎使用Stream并行
        
    第八章 
        讨论方法设计的几个方面:如何处理参数和返回值,如何设计签名,如何在方法中编写文档,从而使方法设计在可用性、健壮性和灵活性上有进一步的提升

第49条
            检查参数的有效性
        第50条
            必要时进行保护性拷贝
        第51条
            谨慎设计方法签名
        第52条
            慎用重载
        第53条
            慎用可变参数
        第54条
            返回零长度的数据或者集合,而不是null
        第55条
            谨慎返回optional
        第56条
            为所有导出的API元素编写文档注释
        
    第九章 
        主要讨论Java语言的具体细节,包括局部变量的处理、控制结构、库类的使用。各种数据类型的用法、反射机制和本地方法的用法,以及优化和命名惯例

第57条
            将局部变量的作用于最小化
        第58条
            for-each循环优先于传统的for循环
        第59条
            了解和使用类库
        第60条
            如果需要精确的答案,请避免使用float和double
        第61条
            基本类型优先于装箱基本类型
        第62条
            如果其他类型更适合,则尽量避免使用字符串
        第63条
            了解字符串连接的性能
        第64条
            通过接口引用对象
        第65条
            接口优先于反射机制
        第66条
            谨慎地使用本地方法
        第67条
            谨慎地进行优化
        第68条
            遵守普遍接收的命名惯例
        
    第十章 
        阐述如何充分发挥异常的优点来提高程序的可读性、可靠性和可维护性,以及减少异常使用不当所带来的负面影响,并提供一些有关于有效使用异常的指导原则

第69条
            只针对异常的情况才使用异常
        第70条
            对可恢复的情况使用受检异常,对编程错误使用运行时异常
        第71条
            避免不必要地使用受检异常
        第72条
            优先使用标准的异常
        第73条
            抛出与抽象对应的异常
        第74条
            每个方法抛出的所有异常都要建立文档
        第75条
            在细节消息中包含失败-捕获消息
        第76条
            努力使失败保持原子性
        第77条
            不要忽略异常
        
    第十一章 
        阐述如何写出清晰、正确、文档组织良好的并发程序

第78条
            同步访问共享的可变数据
        第79条
            避免过度同步
        第80条
            executor、task和stream优先于线程
        第81条
            并发工具优先于wait和notify
        第82条
            线程安全性的文档化
        第83条
            慎用延迟初始化
        第84条
            不要依赖于线程调度器
        
    第十二章 
        讲解序列化方面的技术,其中包括序列化代理模式,它可以帮助你规避对象序列化的许多缺陷

第85条
            其他方法优先于Java序列化
        第86条
            谨慎地实现Serializable
        第87条
            考虑使用自定义的序列化形式
        第88条
            保护性地编写readObject方法
        第89条
            对于实例控制,枚举类型优先于readResolve
        第90条
            考虑用序列化代理代替序列化实例

相关书籍:    《The Java Programing Language》(作者是Amold、Gosling和Holmes)
                    《The Java Language Specification》(作者是Gosling、Joy和Bracha)

(在读,需要可进行沟通)

Effective Java目录相关推荐

  1. Effective Java(第3版) 90条经验法则

    目录 第2章 创建和销毁对象 第1条:用静态工厂方法替代构造器 第2条:遇到多个构造器参数时要考虑使用构建器 例子 使用 第3条:用私有构造器或者枚举类型强化Singleton属性 例子 使用 第4条 ...

  2. Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25

    Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...

  3. 5天带你读完《Effective Java》(三)

    <Effective Java>是Java开发领域无可争议的经典之作,连Java之父James Gosling都说: "如果说我需要一本Java编程的书,那就是它了". ...

  4. 5天带你读完《Effective Java》(一)

    <Effective Java>是Java开发领域无可争议的经典之作,连Java之父James Gosling都说:"如果说我需要一本Java编程的书,那就是它了".它 ...

  5. 《Effective Java》学习笔记 - (1) 使用静态工厂方法代替构造器

    文章目录 前言 使用静态工厂方法代替构造器 1. 优点 1.1 静态工厂方法有名称 1.2 不必每次调用的时候都创建一个对象 1.3 可以返回类型的任何子类型的对象 1.4 所返回的对象的类型可以随着 ...

  6. Java之父都需要的《Effective Java中文版(第3版)》到底有多牛b!Java程序员都应该需要!

    写在前面 你是否正在寻找一本能够更加深入地了解Java编程语言的书,以便编写出更清晰.更正确.更健壮且更易于重用的代码? Effective Java中文版(第3版) 再适合不过了!这是一本分享经验并 ...

  7. 《Effective Java》真的是一本值得一直去钻研的好书

    文章目录 <Effective Java>读书笔记 第一章 引言 第二章 创建和销毁对象 1 考虑使用静态工厂方法替代构造方法** 2 当构造方法参数过多时使用builder(建造者) 模 ...

  8. Java之父James Gosling鼎力推荐《Effective Java 第三版》最新中文版,Java程序员必看神书

    前言 Java之父James Gosling鼎力推荐.Jolt获奖作品全新升级,针对Java 7.8.9全面更新,Java程序员必备参考书.包含大量完整的示例代码和透彻的技术分析,通过90条经验法则, ...

  9. 第 3 次读 Effective Java,这 58 个技巧最值!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...

  10. java打包没有src_maven 打包时,src/main/java目录下的xml等资源文件没有打包进去的问题...

    关于使用maven打包src/main/java中一些关于mybatis的xml都没有打包进去,导致war包启动不起来,在此记录一下,解决方法. 默认maven在src/main/java中只编译ja ...

最新文章

  1. psnr 与 ssim评测步骤
  2. apu和atom处理器两者的定位
  3. 内核compiler.h的学习
  4. DevOps笔记-05:IT行业中BA、SM、PO、PM、PD、Dev、Ops、QA都是什么角色
  5. python matplotlib绘图 axes和pyplot用法的区别是什么?子图subplot
  6. 【CSU - 1004】Xi and Bo(并查集,裸题)
  7. ❤️六W字《计算机基础知识》(二)(建议收藏)❤️
  8. 对于公司来说,企业内训是否真的有必要?
  9. MySQL中replace主键_Mysql中replace与replace into的用法讲解
  10. Ubuntu 配置Tomcat环境(转载)
  11. web前端优化一些看法
  12. 【堆栈溢出】堆栈溢出
  13. oracle revoke 列_oracle受权与回收权限grant和revoke
  14. MS Office 开发工具--VBA
  15. 【整理资料】空间信息网络通信协议
  16. 武汉计算机学校分数线,武汉交通学校2021年招生录取分数线
  17. 用git统计代码提交行数
  18. 如何按照DocNum+LineNum+流水号生成批次号
  19. 关于激光雷达,投资者及车企感兴趣的12个问题
  20. 计算机科学与天文,计算机科学技术帮助天文学家探索宇宙

热门文章

  1. 台式机装苹果系统_AMD台式机装苹果系统!!
  2. 红茶的功效与作用,喝红茶的好处和坏处,红茶的种类有哪些
  3. 解决iOS8下ALAssetsLibrary创建相册的bug
  4. 2014TI杯(D题)带啸叫检测与抑制的音频功率放大器
  5. centos 安装 时间校准与定时同步
  6. 2022年圣诞节外贸出口热门清单 外贸进出口商品查询 贸易动力
  7. 用python中的递归画一棵小树
  8. PS 将签名背景修改为透明色
  9. 【硬见小百科】开关电源电路组成及各部分详解
  10. 工具用法有道云笔记: Mac和Windows上有道云笔记更换背景方法--202205更新