新書推薦:

《
下一代无线通信使能技术
》
售價:NT$
653.0

《
游牧主体:当代女性主义理论中的具身性和性差异(新行思)
》
售價:NT$
398.0

《
具身智能:人工智能的下一个浪潮
》
售價:NT$
352.0

《
甲骨文丛书·《源氏物语》的美学世界
》
售價:NT$
959.0

《
我们为何渴望安稳,却又想要逃离(心理学版《人性的枷锁》)
》
售價:NT$
286.0

《
美国史:从第一块殖民地到现在(大选后的美国走向历史已经给出答案!四百年美国史看懂美国裂痕始终无法弥合的历史症结)
》
售價:NT$
806.0

《
奇幻的世界,熟悉的世界:太阳系探索之旅
》
售價:NT$
403.0

《
菜点设计
》
售價:NT$
351.0
|
編輯推薦: |
Jolt获奖作品全新升级版,针对Java7、8、9全面更新,Java之父James Gosling鼎力推荐,Java程序员的实用参考书全书包含90个条目,通过示例代码全面描述和透彻解释Java新特性
|
內容簡介: |
本书是经典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等。本书并非面向Java初学者,而是要求读者有一定的Java编程经验。对于在Java开发方面已经积累一定经验的读者而言,本书可以帮助其更深入地理解Java编程语言,以成为更卓越、高效的Java开发人员。
|
關於作者: |
约书亚·布洛克(Joshua Bloch)是美国卡内基-梅隆大学教授,曾是Google公司首席Java架构师、Sun公司杰出工程师和Transarc公司高级系统设计师。他带领团队设计和实现过无数的Java平台特性,包括JDK 5.0语言增强版和获奖的Java Collections Framework。他拥有哥伦比亚大学的计算机科学学士学位和卡内基-梅隆大学的计算机科学博士学位。他的著作还包括Java Puzzlers和《Java并发编程实战》(Java Concurrency in Practice,曾获Jolt大奖提名)等。
|
目錄:
|
目录序言6前言7第3版前言7第 2版前言7第 1版前言8致谢9第3版致谢9第 2版致谢10第 1版致谢11第 1章 引言13第 2章 创建和销毁对象16条目1:用静态工厂方法代替构造器16条目2:当构造器参数较多时考虑使用生成器19条目3:利用private构造器或枚举类型实现单件26条目4:利用private构造器防止类被实例化28条目5:优先考虑通过依赖注入来连接资源29条目6:避免创建不必要的对象31条目7:清除过期的对象引用34条目8:避免使用终结方法和清理方法36条目9:与try-finally相比,首选try-with-resources41第3章 所有对象通用的方法44条目10:在重写equals方法时要遵守通用约定44条目11:重写equals方法时应该总是重写hashCode方法55条目12:总是重写toString方法59条目13:谨慎重写clone方法61条目14:考虑实现Comparable接口68第4章 类和接口74条目15:最小化类和成员的可访问性74条目16:在公开类中,使用访问方法,而不使用public的字段77条目17:使可变性最小化79条目18:组合优先于继承85条目19:要么为继承而设计并提供文档说明;要么就禁止继承90条目20:与抽象类相比,优先选择接口95条目21:为传诸后世而设计接口99条目22:接口仅用于定义类型101条目23:优先使用类层次结构而不是标记类102条目24:与非静态成员类相比,优先选择静态成员类105条目25:限制在一个源文件中放一个顶层类107第5章 泛型109条目26:不要使用原始类型110条目27:消除unchecked类型的警告114条目28:列表优先于数组116条目29:首选泛型类型120条目30:首选泛型方法124条目31:使用有限制的通配符增加API的灵活性128条目32:谨慎混用泛型和可变参数133条目33:考虑类型安全的异构容器137第6章 枚举和注解142条目34:使用enum代替int常量142条目35:使用实例字段代替序号152条目36:使用EnumSet代替位域153条目37:不要以序号作为索引,使用EnumMap代替154条目38:使用接口模拟可扩展的枚举159条目39:与命名模式相比首选注解162条目40:始终使用Override注解169条目41:使用标记接口来定义类型171第7章 Lambda表达式和流173条目42:与匿名类相比,优先选择Lambda表达式173条目43:与Lambda表达式相比,优先选择方法引用176条目44:首选标准的函数式接口178条目45:审慎地使用流181条目46:在流中首选没有副作用的函数187条目47:作为返回类型时,首选集合类而不是流191条目48:将流并行化时要谨慎196第8章 方法200条目49:检查参数的有效性200条目50:必要时进行保护性拷贝203条目51:仔细设计方法签名207条目52:谨慎使用重载208条目53:谨慎使用可变参数214条目54:返回空的集合或数组,而不是null215条目55:谨慎返回Optional217条目56:为所有导出的API元素编写文档注释221第9章 通用编程227条目57:最小化局部变量的作用域227条目58:与传统的for循环相比,首选for-each循环230条目59:了解并使用库232条目60:如果需要精确的答案,避免使用float和double235条目61:首选基本类型,而不是其封装类237条目62:如果其他类型更适合,就不要使用字符串239条目63:注意字符串连接操作的性能241条目64:通过接口来引用对象242条目65:与反射相比,首选接口244条目66:谨慎使用本地方法246条目67:谨慎进行优化247条目68:遵循普遍接受的命名惯例249第 10章 异常253条目69:异常机制应该仅用于异常的情况253条目70:对于可恢复的条件,使用检查型异常;对于编程错误,使用运行时异常255条目71:避免不必要地使用检查型异常256条目72:优先使用标准异常258条目73:抛出适合于当前抽象的异常260条目74:将每个方法抛出的所有异常都写在文档中261条目75:将故障记录信息包含在详细信息中263条目76:努力保持故障的原子性264条目77:不要忽略异常266第 11章 并发267条目78:同步对共享可变数据的访问267条目79:避免过度同步271条目80:与线程相比,首选执行器、任务和流276条目81:与wait和notify相比,首选高级并发工具278条目82:将线程安全性写在文档中282条目83:谨慎使用惰性初始化285条目84:不要依赖线程调度器287第 12章 序列化290条目85:优先选择其他序列化替代方案290条目86:在实现Serializable接口时要特别谨慎293条目87:考虑使用自定义的序列化形式295条目88:防御性地编写readObject方法301条目89:对于实例受控的类,首选枚举类型而不是readResolve306条目90:考虑使用序列化代理代替序列化实例310附录 与第 2版中条目的对应关系314参考文献 317
|
|