王朝网络
分享
 
 
 

Effective Java (第2版)(英文版)

王朝导购·作者佚名
 
Effective Java (第2版)(英文版)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  参考价格: 点此进入淘宝搜索页搜索
  分类: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,Java,
  品牌: 布洛克(Bloch.J.)

基本信息·出版社:人民邮电出版社

·页码:346 页

·出版日期:2009年09月

·ISBN:7115211310/9787115211316

·条形码:9787115211316

·包装版本:第2版

·装帧:平装

·开本:16

·正文语种:英语

产品信息有问题吗?请帮我们更新产品信息。

内容简介《Effective Java (第2版)(英文版)》介绍了在Java编程中78条经典的、实用性极高的经验规则,这些经验规则可以帮助开发人员来解决每天都有可能面对的大多数问题。书中对Java平台设计专家所使用的技术的介绍,揭示了如何事半功倍地的编写清晰、健壮和高效的代码。《Effective Java (第2版)(英文版)》是经典图书Effective Java的第2版,涵盖了Java 5中的重要变化,并删除了一些过时的内容。《Effective Java (第2版)(英文版)》所介绍的每条规则,都以简明易懂的语言来阐释,并通过示例代码进一步加以说明。《Effective Java (第2版)(英文版)》内容翔实,层次分明,是一本可以帮助技术人员更深层次理解Java的参考用书。

作者简介Joshua Bloch是Google公司的首席Java构架师,也是Jolt图书大奖的获得者。他曾是Sun公司的杰出工程师和Transarc公司的高级系统设计师。Bloch带领着他的优秀团队,设计和实现过无数的Java平台特性。包括JDK5.0语言增强版和获奖的Java Collections Framework。

编辑推荐《Effective Java (第2版)(英文版)》:如果您正在寻找一本能够帮助您深入了解和掌握Java的经典图书,不用找了!《Effective Java (第2版)(英文版)》为您提供了78条程序员必知的黄金法则。这些法则针对您每天都要遇到的编程问题,提出最有效、最实用的解决方案,帮助您编写出更清晰、更准确、更实用且易于重用的代码。

《Effective Java (第2版)(英文版)》是Jolt获奖图书《Effective Java》的最新版本,涵盖了第1版之后出现的Java SE5和JavaSE6的新特性,同时介绍了新的设计模式和语言习惯用法,以及如何充分利用从泛型到枚举、从注解到自动装箱的各种特性。

书中的每一章节都简洁明了、各自独立。作者针对Java平台的精妙之处提出了具体的使用建议和独到的见解,并提供了优秀的代码范例。

《Effective Java (第2版)(英文版)》的主要内容有:

全新的泛型、枚举、注解、自动装箱、for-each循环、可变参数和并发机制等;

经典主题的全新技术和最佳实践,包括对象、类、类库、方法和序列化;

如何避免如陷阱和缺陷之类常被误解的细微知识;

Java语言本身和最基本的类库及其扩展。

Jolt获奖图书的最新版本 78条程序员必知的黄金法则

助您编写出更优秀代码的经典读本

目录

1 Introduction

2 Creating and Destroying Objects

Item 1: Consider static factory methods instead of constructors

Item 2: Consider a builder when faced with many constructor parameters

Item 3: Enforce the singleton property with a private constructor or an enum type

Item 4: Enforce noninstantiability with a private constructor

Item 5: Avoid creating unnecessary objects

Item 6: Eliminate obsolete object references

Item 7: Avoid finalizers

3 Methods Common to All Objects

Item 8: Obey the general contract when overriding equals

Item 9: Always override hashCode when you overrideequals

Item 10: Always override toString

Item 11: Override clone judiciously

Item 12: Consider implementing Comparable

4 Classes and Interfaces

Item 13: Minimize the accessibility of classes and members

Item 14: In public classes, use accessor methods, not public fields

Item 15: Minimize mutability

Item 16: Favor composition over inheritance

Item 17: Design and document for inheritance or else prohibit it

Item 18: Prefer interfaces to abstract classes

Item 19: Use interfaces only to define types

Item 20: Prefer class hierarchies to tagged classes

Item 21: Use function objects to represent strategies

Item 22: Favor static member classes over nonstatic

5 Generics

Item 23: Don't use raw types in new code

Item 24: Eliminate unchecked warnings

Item 25: Prefer lists to arrays

Item 26: Favor generic types

Item 27: Favor generic methods

Item 28: Use bounded wildcards to increase API flexibility

Item 29: Consider typesafe heterogeneous containers

6 Enums and Annotations

Item 30: Use enums instead of int constants

Item 31: Use instance fields instead of ordinals

Item 32: Use EnumSet instead of bit fields

Item 33: Use EnumMap instead of ordinal indexing

Item 34: Emulate extensible enums with interfaces

Item 35: Prefer annotations to naming patterns

Item 36: Consistently use the Override annotation

Item 37: Use marker interfaces to define types

7 Methods

Item 38: Check parameters for validity

Item 39: Make defensive copies when needed

Item 40: Design method signatures carefully

Item 41: Use overloading judiciously

Item 42: Use varargs judiciously

Item 43: Return empty arrays or collections, not nulls

Item 44: Write doc comments for all exposed API elements

8 General Programming

Item 45: Minimize the scope of local variables

Item 46: Prefer for-each loops to traditional for loops

Item 47: Know and use the libraries

Item 48: Avoid float and double if exact answers are required

Item 49: Prefer primitive types to boxed primitives

Item 50: Avoid strings where other types are more appropriate

Item 51: Beware the performance of string concatenation

Item 52: Refer to objects by their interfaces

Item 53: Prefer interfaces to reflection

Item 54: Use native methods judiciously

Item 55: Optimize judiciously

Item 56: Adhere to generally accepted naming conventions

9 Exceptions

Item 57: Use exceptions only for exceptional conditions

Item 58: Use checked exceptions for recoverable conditions and runtime exceptions for programming errors

Item 59: Avoid unnecessary use of checked exceptions

Item 60: Favor the use of standard exceptions

Item 61: Throw exceptions appropriate to the abstraction

Item 62: Document all exceptions thrown by each method

Item 63: Include failure-capture information in detail messages

Item 64: Strive for failure atomicity

Item 65: Don't ignore exceptions

10 Concurrency

Item 66: Synchronize access to shared mutable data

Item 67: Avoid excessive synchronization

Item 68: Prefer executors and tasks to threads

Item 69: Prefer concurrency utilities to wait and notify

Item 70: Document thread safety

Item 71: Use lazy initialization judiciously

Item 72: Don't depend on the thread scheduler

Item 73: Avoid thread groups

11 Serialization

Item 74: Implement Serializable judiciously

Item 75: Consider using a custom serialized form

Item 76: Write readObject methods defensively

Item 77: For instance control, prefer enum types toreadResolve

Item 78: Consider serialization proxies instead of serialized instances

Appendix: Items Corresponding to First Edition

References

Index

……[看更多目录]

序言在我于2001年写了本书的第1版之后,Java平台又发生了很多变化,我想是该出第2版的时候了。Java 5中新增加了泛型、枚举类型、注解、自动装箱和for-each循环。此外还增加了新的并发类库:java.util.concurrent。我有幸和Gilad Bracha一起,带领团队设计了最新的语言特性,并参加了设计和开发并发类库的团队,这个团队是由Dong Lea领导的。

Java平台中另一个大的变化是广泛采用了现代的IDE(Integrated Development Environment),例如,Eclipse、IntelliJ IDEA和NetNeans,以及静态分析工具的IDE,如FindBugs。虽然我还未参与到这部分工作,但已经从中受益匪浅,并且很清楚它们对于Java开发体验所带来的影响。

2004年,我到了Google公司工作,但在过去的4年中,我仍然继续参与了Java平台的开发,在Google公司和JCP(Java Community Process)的大力帮助下,继续并发和集合API的开发。我还有幸利用Java平台去开发供Google内部使用的类库,从而了解了作为一名用户的感受。

我在2001年编写本书第1版时,主要目的是与读者分享我的经验,让大家避免我所走过的弯路,使大家更容易成功。本版仍然大量采用来自Java平台类库的真实范例。

第1版所带来的反应远远超出了我的预期。我在收集所有新的资料以使本书保持最新时,尽可能地保持了资料的真实。毫无疑问,本书的篇幅从以前的57个条目发展到了78条目。我不仅增加了23个条目,并且修改了原来的所有资料,并删去了一些已经过时的条目。

我在第1版的前言中说过:Java程序设计语言和它的类库非常有益于代码质量和效率的提高,并且使得Java进行编码成为一种乐趣。最新版本中的变化使得Java平台日趋完善。现在这个平台比2001年的要大得多,也复杂得多,但是一旦掌握了使用新特性的模式和用法,它们就会使你的程序变得更完美,使你的工作变得更轻松。我希望本版能够体现出我对Java平台持续的热情,并将这种热情传递给你,帮助你更加高效和愉快地使用Java平台及其新的特性。

文摘插图:

Effective Java (第2版)(英文版)

If the improved version of the Person class is initialized but its i s BabyBoomer method is never invoked, the BOOM_START and BOOM_END fields will be initialized unnecessarily. It would be possible to eliminate the unnecessary initializations by lazily initializing these fields (Item 71) the first time the i s BabyBoome r method is invoked, but it is not recommended. As is often the case with lazy initialization, it would complicate the implementation and would be unlikely to result in a noticeable performance improvement beyond what we've already achieved (Item 55).

In the previous examples in this item, it was obvious that the objects in question could be reused because they were not modified after initialization. There are other situations where it is less obvious. Consider the case of adapters [Gamma95, p. 139], also known as views. An adapter is an object that delegates to a backing, object, providing an alternative interface to the backing object. Because an adapter has no state beyond that of its backing object, there's no need to create more than one instance of a given adapter to a given object.

For example, the keySet method of the Map interface returns a Set view of the Map object, consisting of all the keys in the map. Naively, it would seem that every call to keySet would have to create a new Set instance, but every call to keySet on a given Map object may return the same Set instance. Although the returned Set instance is typically mutable, all of the returned objects are functionally identical: when one of the returned objects changes, so do all the others because they're all backed by the same Map instance. While it is harmless to create multiple instances of the keySet view object, it is also unnecessary.

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
更多商品
LTE空中接口技术与性能(LTE技术丛书)
美女摄影用光教程
绿色IT:环保与利益双赢(国际先进工业技术译丛)(Reduce Your Information System's Environmental ImPact While Adding to the Bottom Line)
ADOBE ILLUSTRATOR CS4标准培训教材(Adobe中国教育认证计划及ACAA教育发展计划标准培训教材)
电信运营管理(中国通信学会普通高等教育“十二五”规划教材立项项目,普通高等院校电子信息类系列教材)
机械制图(高等学校教材)
数字电路与逻辑设计(普通高等教育“十一五”国家级规划教材,普通高等院校电子信息类系列教材)
电磁场与电磁波(普通高等院校电子信息类系列教材)
汽车发动机检修(中国职业技术教育学会科研项目优秀成果,高等职业教育汽车专业“双证课程”培养方案规划教材)
微型计算机原理及应用(21世纪高等学校计算机规划教材)
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有