Effective Java中文版(原书第3版) Java语言Java教程Java代码编写计算机编程语言程序设计书籍
¥49.90
运费: | ¥ 0.00-20.00 |
商品详情
书名:Effective Java中文版:原书第3版
定价:99.8
ISBN:9787115628985
作者:[美]约书亚·布洛克(Joshua Bloch)
版次:第1版
出版时间:2024-03
内容提要:
本书是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
定价:99.8
ISBN:9787115628985
作者:[美]约书亚·布洛克(Joshua Bloch)
版次:第1版
出版时间:2024-03
内容提要:
本书是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
- 人民邮电出版社有限公司 (微信公众号认证)
- 人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...