Effective Java中文版(原书第3版)

Java 734 浏览 102 下载

Effective Java中文版(原书第3版)
264页 免费
作者: 约书亚·布洛克(Joshua Bloch)
出版社: 人民邮电出版社
页数: 264页
ISBN: 9787115628985
下载信息

下载类型: 直接下载

销售价格: ¥0.00


书籍详情
用纸 胶版纸
版次 1
出版时间 2024-03-01
字数 417000
页数 264
包装 平装
开本 16开
ISBN 9787115628985
正文语种 中文
出版社 人民邮电出版社
品牌 异步图书
商品编号 14419018
包装清单 暂无
内容简介
产品特色 编辑推荐 1.Java之父James Gosling鼎力推荐,Jolt获奖作品全新升级,与《Java编程思想》和《Java核心技术》(Core Java)齐名,针对Java 7、8、9全面更新,Java程序员必备参考书。 2.本书大部分内容都不是讨论性能的,而是关心如何编写出清晰、正确、可用、健壮、灵活和可维护的程序。包含大量完整的示例代码和透彻的技术分析,通过90条经验法则,探索新的设计模式和语言习惯用法,帮助读者更加有效地使用Java编程语言及其基本类库。 3.附赠额外的项目源码和文档,以及对应的视频讲解。 内容简介 本书是Jolt获奖作品Effective Java的第3版,对上一版进行了全面更新,涵盖了从Java 5到Java 9的种种特性,是Java开发人员不可缺少的一本参考书。 本书分为12章,包含90个条目,形式简洁。每个条目中都讲述了对Java的独到见解,阐明了如何编写高效、优雅的程序,并且提供了清晰、易懂的示例代码。与上一版相比,本书增加了Lambda表达式、流、Optional类、接口默认方法、try-with-resources、@SafeVarargs注解、模块等Java 7及以后所引入的新特性。本书介绍了如何充分利用泛型、枚举、注解、自动装箱、for-each循环、可变参数、并发机制等各种特性,帮助读者更加有效地使用Java编程语言及其基本类库(...
详细介绍
产品特色

编辑推荐

1.Java之父James Gosling鼎力推荐,Jolt获奖作品全新升级,与《Java编程思想》和《Java核心技术》(Core Java)齐名,针对Java 7、8、9全面更新,Java程序员必备参考书。

2.本书大部分内容都不是讨论性能的,而是关心如何编写出清晰、正确、可用、健壮、灵活和可维护的程序。包含大量完整的示例代码和透彻的技术分析,通过90条经验法则,探索新的设计模式和语言习惯用法,帮助读者更加有效地使用Java编程语言及其基本类库。

3.附赠额外的项目源码和文档,以及对应的视频讲解。


内容简介

本书是Jolt获奖作品Effective Java的第3版,对上一版进行了全面更新,涵盖了从Java 5到Java 9的种种特性,是Java开发人员不可缺少的一本参考书。

本书分为12章,包含90个条目,形式简洁。每个条目中都讲述了对Java的独到见解,阐明了如何编写高效、优雅的程序,并且提供了清晰、易懂的示例代码。与上一版相比,本书增加了Lambda表达式、流、Optional类、接口默认方法、try-with-resources、@SafeVarargs注解、模块等Java 7及以后所引入的新特性。本书介绍了如何充分利用泛型、枚举、注解、自动装箱、for-each循环、可变参数、并发机制等各种特性,帮助读者更加有效地使用Java编程语言及其基本类库(java.lang、java.util和java.io,以及子包,如java.util.concurrent和java.util.function等)。


作者简介

约书亚.布洛克(Joshua Bloch)是美国卡内基-梅隆大学教授,曾是Google公司首席Java架构师、Sun公司杰出工程师和Transarc公司高级系统设计师。他带领团队设计和实现过无数的Java平台特性,包括JDK 5.0语言增强版和获奖的Java Collections Framework。他拥有哥伦比亚大学的计算机科学学士学位和卡内基-梅隆大学的计算机科学博士学位。他的作品还包括Java Puzzlers和《Java并发编程实战》(Java Concurrency in Practice,曾获Jolt大奖提名)等。

目录

第 1章  引言 1

第 2章  创建和销毁对象 4

条目1:用静态工厂方法代替构造器 4

条目2:当构造器参数较多时考虑使用

生成器 7

条目3:利用私有构造器或枚举类型强化

Singleton属性 13

条目4:利用私有构造器防止类被实例化 14

条目5:优先考虑通过依赖注入来连接

资源 15

条目6:避免创建不必要的对象 17

条目7:清除过期的对象引用 19

条目8:避免使用终结方法和清理方法 21

条目9:与try-finally相比,首选

try-with-resources 25

第3章  对所有对象都通用的方法 28

条目10:在重写equals方法时要遵守通用

约定 28

条目11:重写equals方法时应该总是重写

hashCode方法 37

条目12:总是重写toString方法 41

条目13:谨慎重写clone方法 43

条目14:考虑实现Comparable接口 49

第4章  类和接口 54

条目15:最小化类和成员的可访问性 54

条目16:在公有类中,使用访问器方法,

而不使用公有的字段 57

条目17:使可变性最小化 58

条目18:组合优先于继承 63

条目19:要么为继承而设计并提供文档

说明,要么就禁止继承 68

条目20:与抽象类相比,优先选择接口 72

条目21:为传诸后世而设计接口 75

条目22:接口仅用于定义类型 77

条目23:优先使用类层次结构而不是

标记类 78

条目24:与非静态成员类相比,优先选择

静态成员类 81

条目25:将源文件限制为单个顶层类 83

第5章  泛型 85

条目26:不要使用原始类型 85

条目27:消除unchecked类型的警告 89

条目28:列表优先于数组 91

条目29:首选泛型类型 94

条目30:首选泛型方法 98

条目31:使用有限制的通配符增加API的

灵活性 100

条目32:谨慎混用泛型和可变参数 105

条目33:考虑类型安全的异构容器 108

第6章  枚举和注解 113

条目34:使用enum代替int常量 113

条目35:使用实例字段代替序号 121

条目36:使用EnumSet代替位域 122

条目37:不要以序号作为索引,使用

EnumMap代替 123

条目38:使用接口模拟可扩展的枚举 127

条目39:与命名模式相比首选注解 130

条目40:始终使用Override注解 136

条目41:使用标记接口来定义类型 138

第7章  Lambda表达式和流 140

条目42:与匿名类相比,优先选择Lambda

表达式 140

条目43:与Lambda表达式相比,优先选择

方法引用 143

条目44:首选标准的函数式接口 144

条目45:谨慎使用流 147

条目46:在流中首选没有副作用的

函数 152

条目47:作为返回类型时,首选Collection

而不是Stream 156

条目48:将流并行化时要谨慎 160

第8章  方法 163

条目49:检查参数的有效性 163

条目50:必要时进行保护性复制 165

条目51:仔细设计方法签名 168

条目52:谨慎使用重载 170

条目53:谨慎使用可变参数 174

条目54:返回空的集合或数组,而不是

null 176

条目55:谨慎返回Optional 177

条目56:为所有导出的API元素编写文档

注释 181

第9章  通用编程 186

条目57:最小化局部变量的作用域 186

条目58:与传统的for循环相比,首选

for-each循环 188

条目59:了解并使用类库 190

条目60:如果需要精确的答案,避免使用

float和double 192

条目61:首选基本类型,而不是其

封装类 194

条目62:如果其他类型更适合,就不要使用

字符串 196

条目63:注意字符串拼接操作的性能 198

条目64:通过接口来引用对象 198

条目65:与反射相比,首选接口 200

条目66:谨慎使用本地方法 202

条目67:谨慎进行优化 203

条目68:遵循普遍接受的命名惯例 205

第 10章  异常 208

条目69:异常机制应该仅用于异常的

情况 208

条目70:对于可恢复的条件,使用检查型

异常;对于编程错误,使用运行时

异常 210

条目71:避免不必要地使用检查型

异常 211

条目72:优先使用标准异常 212

条目73:抛出适合于当前抽象的异常 214

条目74:将每个方法抛出的所有异常都写在

文档中 215

条目75:将故障记录信息包含在详细

信息中 216

条目76:努力保持故障的原子性 218

条目77:不要忽略异常 219

第 11章  并发 220

条目78:同步对共享可变数据的访问 220

条目79:避免过度同步 223

条目80:与线程相比,首选执行器、

任务和流 228

条目81:与wait和notify相比,首选

高级并发工具 229

条目82:将线程安全性写在文档中 233

条目83:谨慎使用延迟初始化 235

条目84:不要依赖线程调度器 237

第 12章  序列化 239

条目85:优先选择其他序列化替代方案 239

条目86:在实现Serializable接口时要

特别谨慎 241

条目87:考虑使用自定义的序列化形式 243

条目88:保护性地编写readObject

方法 248

条目89:对于实例受控的类,首选枚举类型

而不是readResolve 253

条目90:考虑使用序列化代理代替序列化

实例 256

附录  与第 2版中条目的对应关系 259

参考文献 262