作者:
Joshua Bloch
出版社: 机械工业出版社
原作名: Effective Java Second Edition
译者: 俞黎敏
出版年: 2009-1-1
页数: 287
定价: 52.00元
装帧: 平装
丛书: Sun公司核心技术丛书
ISBN: 9787111255833
出版社: 机械工业出版社
原作名: Effective Java Second Edition
译者: 俞黎敏
出版年: 2009-1-1
页数: 287
定价: 52.00元
装帧: 平装
丛书: Sun公司核心技术丛书
ISBN: 9787111255833
内容简介 · · · · · ·
本书介绍了在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。
本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。本书内容全面,结构清晰,讲解详细。可作为技术人员的参考用书。
Effective java 中文版(第2版)的创作者
· · · · · ·
-
约书亚·布洛克 作者
作者简介 · · · · · ·
Joshua Bloch是Google公司的首席Java架构师。是Jolt大奖的获得者。他曾是Sun公司的杰出工程师,和Transarc公司的高级系统设计师。Bloch曾带领团队设计和实现过无数的Java平台特性,包括JDK 5.0语言增强版和获奖的Java Collections Framework。他的著作还包括:《Java Puzzlers》、《Java Concurrency in Practive》等。
目录 · · · · · ·
译者序
序
前言
致谢
第1章 引言
第2章 创建和销毁对象
第1条:考虑用静态工厂方法代替构造器
第2条:遇到多个构造器参数时要考虑用构建器
第3条:用私有构造器或者枚举类型强化Singleton属性
第4条:通过私有构造器强化不可实例化的能力
第5条:避免创建不必要的对象
第6条:消除过期的对象引用
第7条:避免使用终结方法
第3章 对于所有对象都通用的方法
第8条:覆盖equals时请遵守通用约定
第9条:覆盖equals时总要覆盖hashCode
第10条:始终要覆盖toString
第11条:谨慎地覆盖clone
第12条:考虑实现Comparable接口
第4章 类和接口
第13条:使类和成员的可访问性最小化
第14条:在公有类中使用访问方法而非公有域
第15条:使可变性最小化
第16条:复合优先于继承
第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
第18条:接口优于抽象类
第19条:接口只用于定义类型
第20条:类层次优于标签类
第21条:用函数对象表示策略
第22条:优先考虑静态成员类
第5章 泛型
第23条:请不要在新代码中使用原生态类型
第24条:消除非受检警告
第25条:列表优先于数组
第26条:优先考虑泛型
第27条:优先考虑泛型方法
第28条:利用有限制通配符来提升API的灵活性
第29条:优先考虑类型安全的异构容器
第6章 枚举和注解
第30条:用enum代替int常量
第31条:用实例域代替序数
第32条:用EnumSet代替位域
第33条:用EnumMap代替序数索引
第34条:用接口模拟可伸缩的枚举
第35条:注解优先于命名模式
第36条:坚持使用Override注解
第37条:用标记接口定义类型
第7章 方法
第38条:检查参数的有效性
第39条:必要时进行保护性拷贝
第40条:谨慎设计方法签名
第41条:慎用重载
第42条:慎用可变参数
第43条:返回零长度的数组或者集合,而不是:null
第44条:为所有导出的API元素编写文档注释
第8章 通用程序设计
第45条:将局部变量的作用域最小化
第46条:for-each循环优先于传统的for循环
第47条:了解和使用类库
第48条:如果需要精确的答案,请避免使用float和double
第49条:基本类型优先于装箱基本类型
第50条:如果其他类型更适合,则尽量避免使用字符串
第51条:当心字符串连接的性能
第52条:通过接口引用对象
第53条:接口优先于反射机制
第54条:谨慎地使用本地方法
第55条:谨慎地进行优化
第56条:遵守普遍接受的命名惯例
第9章 异常
第57条:只针对异常的情况才使用异常
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常
第59条:避免不必要地使用受检的异常
第60条:优先使用标准的异常
第61条:抛出与抽象相对应的异常
第62条:每个方法抛出的异常都要有文档
第63条:在细节消息中包含能捕获失败的信息
第64条:努力使失败保持原子性
第65条:不要忽略异常
第10章 并发
第66条:同步访问共享的可变数据
第67条:避免过度同步
第68条:executor和task优先干线程
第69条:并发工具优先于wait和notify
第70条:线程安全性的文档化
第71条:慎用延迟初始化
第72条:不要依赖于线程调度器
第73条:避免使用线程组
第11章 序列化
第74条:谨慎地实现Serializable接口
第75条:考虑使用自定义的序列化形式
第76条:保护性地编写readObject方法
第77条:对于实例控制,枚举类型优先于readResolve
第78条:考虑用序列化代理代替序列化实例
附录 第1版与第2版条目对照
中英文术语对照
参考文献
· · · · · · (收起)
序
前言
致谢
第1章 引言
第2章 创建和销毁对象
第1条:考虑用静态工厂方法代替构造器
第2条:遇到多个构造器参数时要考虑用构建器
第3条:用私有构造器或者枚举类型强化Singleton属性
第4条:通过私有构造器强化不可实例化的能力
第5条:避免创建不必要的对象
第6条:消除过期的对象引用
第7条:避免使用终结方法
第3章 对于所有对象都通用的方法
第8条:覆盖equals时请遵守通用约定
第9条:覆盖equals时总要覆盖hashCode
第10条:始终要覆盖toString
第11条:谨慎地覆盖clone
第12条:考虑实现Comparable接口
第4章 类和接口
第13条:使类和成员的可访问性最小化
第14条:在公有类中使用访问方法而非公有域
第15条:使可变性最小化
第16条:复合优先于继承
第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
第18条:接口优于抽象类
第19条:接口只用于定义类型
第20条:类层次优于标签类
第21条:用函数对象表示策略
第22条:优先考虑静态成员类
第5章 泛型
第23条:请不要在新代码中使用原生态类型
第24条:消除非受检警告
第25条:列表优先于数组
第26条:优先考虑泛型
第27条:优先考虑泛型方法
第28条:利用有限制通配符来提升API的灵活性
第29条:优先考虑类型安全的异构容器
第6章 枚举和注解
第30条:用enum代替int常量
第31条:用实例域代替序数
第32条:用EnumSet代替位域
第33条:用EnumMap代替序数索引
第34条:用接口模拟可伸缩的枚举
第35条:注解优先于命名模式
第36条:坚持使用Override注解
第37条:用标记接口定义类型
第7章 方法
第38条:检查参数的有效性
第39条:必要时进行保护性拷贝
第40条:谨慎设计方法签名
第41条:慎用重载
第42条:慎用可变参数
第43条:返回零长度的数组或者集合,而不是:null
第44条:为所有导出的API元素编写文档注释
第8章 通用程序设计
第45条:将局部变量的作用域最小化
第46条:for-each循环优先于传统的for循环
第47条:了解和使用类库
第48条:如果需要精确的答案,请避免使用float和double
第49条:基本类型优先于装箱基本类型
第50条:如果其他类型更适合,则尽量避免使用字符串
第51条:当心字符串连接的性能
第52条:通过接口引用对象
第53条:接口优先于反射机制
第54条:谨慎地使用本地方法
第55条:谨慎地进行优化
第56条:遵守普遍接受的命名惯例
第9章 异常
第57条:只针对异常的情况才使用异常
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常
第59条:避免不必要地使用受检的异常
第60条:优先使用标准的异常
第61条:抛出与抽象相对应的异常
第62条:每个方法抛出的异常都要有文档
第63条:在细节消息中包含能捕获失败的信息
第64条:努力使失败保持原子性
第65条:不要忽略异常
第10章 并发
第66条:同步访问共享的可变数据
第67条:避免过度同步
第68条:executor和task优先干线程
第69条:并发工具优先于wait和notify
第70条:线程安全性的文档化
第71条:慎用延迟初始化
第72条:不要依赖于线程调度器
第73条:避免使用线程组
第11章 序列化
第74条:谨慎地实现Serializable接口
第75条:考虑使用自定义的序列化形式
第76条:保护性地编写readObject方法
第77条:对于实例控制,枚举类型优先于readResolve
第78条:考虑用序列化代理代替序列化实例
附录 第1版与第2版条目对照
中英文术语对照
参考文献
· · · · · · (收起)
原文摘录 · · · · · · ( 全部 )
-
例如,构造器 BigInteger(int, int, Random)会返回一个为可能素数(probable prime)的 BigInteger, 但如果用一个名为 BigInteger.probablePrime 的静态工厂方法来表示,效果会更好。 (查看原文) —— 引自章节:第2章 创建和销毁对象 4 -
大多数程序员都不需要这个方法(指枚举的ordinal方法),他是设计成用于像EnumSet和EnumMap这种基于枚举的通用数据结构的,除非你在编写的是这类数据结构,否则最好完全避免使用ordinal方法。 (查看原文) —— 引自第137页
> 全部原文摘录
丛书信息
· · · · · ·
Sun公司核心技术丛书(共38册),
这套丛书还有
《安全模式》《J2ME Jini 应用系统开发》《Solaris 9技术大全》《深入Java虚拟机(原书第2版)》《Java2技术内幕》
等
。
喜欢读"Effective java 中文版(第2版)"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"Effective java 中文版(第2版)"的人也喜欢 · · · · · ·
-
- 深入理解Java虚拟机(第2版) 9.1
-
- Java编程思想 (第4版) 9.1
-
- 重构 9.0
-
- 深入Java虚拟机(原书第2版) 8.7
-
- 代码整洁之道 8.6
-
- 设计模式 9.0
-
- 深入剖析Tomcat 8.2
-
- 高性能MySQL 9.2
-
- JAVA核心技术(卷1) 8.9
Effective java 中文版(第2版)的书评 · · · · · · ( 全部 69 条 )

看书前不建议直接看评论
对于一本好书的评判是由自己决定的。在没看书之前就先看别人怎么议论这本书,你心里就会产生偏差。特别是你买了之后,回过头来看评论,看到那些差评,你是否会产生芥蒂。那这本书看还是不看。 对这本书的翻译问题大多数都是吐槽的。但是只限于吐槽,让别人心生厌恶罢了。如果真...
(展开)

Effective Java中文第三版 读后感
这篇书评可能有关键情节透露
Effective Java中文第三版, 本书上一个版本还是2008年的事情,时光荏苒,在前行的道路上Java与我们一路相伴,中间各种新特性已经层出不穷,让我们目不暇接,但从学习java的角度来说夯实基础才是最总要的,这本书就是为有了一定java基础的同学准备的,里面提炼了90多项条款共大... (展开)> 更多书评 69篇
论坛 · · · · · ·
java100套毕设 链接:https://pan.baidu.com/s/1R9... | 来自冰雨 | 2018-10-24 14:35:56 | |
Effective Java Second Edition中文版勘误列表专用贴 | 来自YuLimin | 2 回应 | 2016-02-08 14:24:02 |
极品 | 来自半兽人 | 2010-11-03 09:43:57 | |
即使看过第一版也值得再看第二版 | 来自我有分寸 | 2010-10-25 22:31:15 | |
如何写出符合Java特性的代码?如何写出符合英语特... | 来自Bourne | 1 回应 | 2010-08-23 00:25:10 |
> 浏览更多话题
这本书的其他版本 · · · · · · ( 全部17 )
-
Prentice Hall (May 28, 2008)9.3分 284人读过
-
机械工业出版社 (2003)8.9分 1092人读过
-
机械工业出版社 (2018)8.8分 430人读过
-
Addison-Wesley Professional (2018)9.6分 191人读过
以下书单推荐 · · · · · · ( 全部 )
- 书单 | 千评9分书 (Sheryl)
- 豆瓣评分>9的计算机图书 (whg)
- 闲着没事读读书(四) (鹿小羽)
- Java修炼之道 (在坡华子)
- 交互设计师养成书单 (LimboMinaïss)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于Effective java 中文版(第2版)的评论:
feed: rss 2.0
3 有用 粒粒微尘 2011-08-31 00:48:57
蹩脚的翻译...
2 有用 corpsefire 2009-05-18 16:22:50
翻译错误很多
0 有用 Ke Bo 2011-11-12 13:14:23
进阶
1 有用 宇宙 2014-10-04 16:51:43
#豆瓣阅读# 其实有点后悔用豆瓣阅读的…… = = 但是挺有帮助,因为我的 Java 确实比较一般。
13 有用 TerabyteX 2015-10-25 12:37:10
java是门繁琐的语言,它让软件开发变得复杂凌乱:糟糕的jdk,现实工程中大量使用第三方库;糟糕的枚举,实际工作中都是用常量代替;各种代理对象,各种设计模式;坑爹的Checked Exception,把异常从头throws到尾,除非你将其捕获;没有操作符重载,只能用坑爹的equals方法;很多函数都是滥用抛异常,比如字符串的split函数,如果用于分隔的字符不包含于待分隔的字符串中,直接抛异常!要... java是门繁琐的语言,它让软件开发变得复杂凌乱:糟糕的jdk,现实工程中大量使用第三方库;糟糕的枚举,实际工作中都是用常量代替;各种代理对象,各种设计模式;坑爹的Checked Exception,把异常从头throws到尾,除非你将其捕获;没有操作符重载,只能用坑爹的equals方法;很多函数都是滥用抛异常,比如字符串的split函数,如果用于分隔的字符不包含于待分隔的字符串中,直接抛异常!要么每次在调用split函数之前调用一下contains函数做验证,要么捕获异常,或者自己把contains和split函数都用上,再封装出1个新的函数,但是像这样没事就抛异常的函数实在太多了,每次都被坑到。。。java的问题实在太多!!! (展开)