| 作者 |
| (美)Bruce Eckel[美] 约书亚·布洛克 (Joshua Bloch) |
| 丛书名 |
| 计算机科学丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787190103161 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------Effective Java中文版(原书第3版)--------------------------- 本书一共包含90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。全书以一种比较松散的方式将这些条目组织成11章,每一章都涉及软件设计的一个主要方面。因此,本书并不一定需要按部就班地从头读到尾,因为每个条目都有一定程度的独立性。这些条目相互之间经常交叉引用,因此可以很容易地在书中找到自己需要的内容。 本书的目标是帮助读者更加有效地使用Java编程语言及其基本类库:java.lang、java.util和java.io,以及子包,如java.util.concurrent和java.util.function。本书时不时地也会讨论其他的类库。 ---------------------------Java编程思想(第4版)--------------------------- 《Java编程思想(第4版)》赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),《Java编程思想(第4版)》都能逐步指导你轻松掌握。 从java编程思想这本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。《Java编程思想(第4版)》共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。 第4版特点: Java编程思想(第4版)这本书特别适合初学者与专业人员的经典的面向对象叙述方式,为更新的Java SE5/6增加了新的示例和章节。 测验框架显示程序输出。 设计模式贯穿于众多示例中:适配器、桥接器、职责链、命令、装饰器、外观、工厂方法、享元、点名、数据传输对象、空对象、代理、单例、状态、策略、模板方法以及访问者。 为数据传输引入了XML,为用户界面引入了SWT和Flash。 . 重新撰写了有关并发的章节,有助于读者掌握线程的相关知识。 专门为第4版以及Java SE5/6重写了700多个编译文件中的500多个程序。 支持网站包含了所有源代码、带注解的解决方案指南、网络日志以及多媒体学习资料。 覆盖了所有基础知识,同时论述了高级特性。 详细地阐述了面向对象原理。 在线可获得Java讲座CD,其中包含Bruce Eckel的全部多媒体讲座。 在www.MindView.net网站上可以观看现场讲座、咨询和评论。 专门为第4版以及Java SE5/6重写了700多个编译文件中的500多个程序。 支持网站包含了所有源代码、带注解的解决方案指南、网络日志以及多媒体学习资料。 覆盖了所有基础知识,同时论述了高级特性。 详细地阐述了面向对象原理。 在线可获得Java讲座CD,其中包含Bruce Eckel的全部多媒体讲座。 在www.MindView.net网站上可以观看现场讲座、咨询和评论。 |
| 目录 |
---------------------------Effective Java中文版(原书第3版)--------------------------- 推荐序 译者序 前言 致谢 第1章 引言 1 第2章 创建和销毁对象 4 第1条:用静态工厂方法代替构造器 4 第2条:遇到多个构造器参数时要考虑使用构建器 8 第3条:用私有构造器或者枚举类型强化Singleton属性 13 第4条:通过私有构造器强化不可实例化的能力 15 第5条:优先考虑依赖注入来引用资源 16 第6条:避免创建不必要的对象 18 第7条:消除过期的对象引用 20 第8条:避免使用终结方法和清除方法 23 第9条:try-with-resources优先于try-finally 27 第3章 对于所有对象都通用的方法 30 第10条:覆盖equals时请遵守通用约定 30 第11条:覆盖equals时总要覆盖hashCode 40 第12条:始终要覆盖toString 44 第13条:谨慎地覆盖clone 46 第14条:考虑实现Comparable接口 53 第4章 类和接口 59 第15条:使类和成员的可访问性最小化 59 第16条:要在公有类而非公有域中使用访问方法 62 第17条:使可变性最小化 64 第18条:复合优先于继承 70 第19条:要么设计继承并提供文档说明,要么禁止继承 75 第20条:接口优于抽象类 79 第21条:为后代设计接口 83 第22条:接口只用于定义类型 85 第23条:类层次优于标签类 86 第24条:静态成员类优于非静态成员类 88 第25条:限制源文件为单个顶级类 91 第5章 泛型 93 第26条:请不要使用原生态类型 93 第27条:消除非受检的警告 97 第28条:列表优于数组 99 第29条:优先考虑泛型 102 第30条:优先考虑泛型方法 106 第31条:利用有限制通配符来提升API的灵活性 109 第32条:谨慎并用泛型和可变参数 114 第33条:优先考虑类型安全的异构容器 118 第6章 枚举和注解 123 第34条:用enum代替int常量 123 第35条:用实例域代替序数 131 第36条:用EnumSet代替位域 132 第37条:用EnumMap代替序数索引 134 第38条:用接口模拟可扩展的枚举 138 第39条:注解优先于命名模式 140 第40条:坚持使用Override注解 147 第41条:用标记接口定义类型 149 第7章 Lambda和Stream 151 第42条:Lambda优先于匿名类 151 第43条:方法引用优先于Lambda 154 第44条:坚持使用标准的函数接口 156 第45条:谨慎使用Stream 159 第46条:优先选择Stream中无副作用的函数 164 第47条:Stream要优先用Collection作为返回类型 168 第48条:谨慎使用Stream并行 172 第8章 方法 176 第49条:检查参数的有效性 176 第50条:必要时进行保护性拷贝 179 第51条:谨慎设计方法签名 182 第52条:慎用重载 184 第53条:慎用可变参数 189 第54条:返回零长度的数组或者集合,而不是null 190 第55条:谨慎返回optinal 192 第56条:为所有导出的API元素编写文档注释 196 第9章 通用编程 202 第57条:将局部变量的作用域最小化 202 第58条:for-each循环优先于传统的for循环 204 第59条:了解和使用类库 207 第60条:如果需要精确的答案,请避免使用float和double 209 第61条:基本类型优先于装箱基本类型 211 第62条:如果其他类型更适合,则尽量避免使用字符串 213 第63条:了解字符串连接的性能 215 第64条:通过接口引用对象 216 第65条:接口优先于反射机制 218 第66条:谨慎地使用本地方法 220 第67条:谨慎地进行优化 221 第68条:遵守普遍接受的命名惯例 223 第10章 异常 227 第69条:只针对异常的情况才使用异常 227 第70条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 229 第71条:避免不必要地使用受检异常 231 第72条:优先使用标准的异常 232 第73条:抛出与抽象对应的异常 234 第74条:每个方法抛出的所有异常都要建立文档 235 第75条:在细节消息中包含失败-捕获信息 237 第76条:努力使失败保持原子性 238 第77条:不要忽略异常 239 第11章 并发 241 第78条:同步访问共享的可变数据 241 第79条:避免过度同步 245 第80条:executor、task和stream优先于线程 250 第81条:并发工具优先于wait和notify 251 第82条:线程安全性的文档化 256 第83条:慎用延迟初始化 258 第84条:不要依赖于线程调度器 261 第12章 序列化 263 第85条:其他方法优先于Java序列化 263 第86条:谨慎地实现Serializable接口 266 第87条:考虑使用自定义的序列化形式 269 第88条:保护性地编写readObject方法 274 第89条:对于实例控制,枚举类型优先于readResolve 279 第90条:考虑用序列化代理代替序列化实例 282 附录 与第2版中条目的对应关系 286 参考文献 289 ---------------------------Java编程思想(第4版)--------------------------- 读者评论 前言 简介 第1章 对象导论 1.1 抽象过程 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 1.4 被隐藏的具体实现 1.5 复用具体实现 1.6 继承 1.6.1 “是一个”(is-a)与“像是一个”(is-like-a)关系 1.7 伴随多态的可互换对象 1.8 单根继承结构 1.9 容器 1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第2章 一切都是对象 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java中的数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 创建新的数据类型:类 2.4.1 域和方法 2.4.2 基本成员默认值 2.5 方法、参数和返回值 2.5.1 参数列表 2.6 构建一个Java程序 2.6.1 名字可见性 2.6.2 运用其他构件 2.6.3 static 关键字 2.7 你的第一个Java程序 编译和运行 2.8 注释和嵌入式文档 2.8.1 注释文档 2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中的别名问题 3.5 算术操作符 3.5.1 一元加、减操作符 3.6 自动递增和递减 3.7 关系操作符 3.7.1 测试对象的等价性 3.8 逻辑操作符 3.8.1 短路 3.9 直接常量 3.9.1 指数记数法 3.10 按位操作符 3.11 移位操作符 3.12 三元操作符 if-else 3.13 字符串操作符 + 和 += 3.14 使用操作符时常犯的错误 3.15 类型转换操作符 3.15.1 截尾和舍入 3.15.2提升 3.16 Java没有“sizeof” 3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以返回值区分重载方法 5.3 缺省构造器 5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static的含义 5.5 清理:终结处理和垃圾回收 5.5.1 finalize()的用途何在 5.5.2 你必须实施清理 5.5.3 终结条件 5.5.4 垃圾回收器如何工作 5.6 成员初始化 5.6.1 指定初始化 5.7 构造器初始化 5.7.1 初始化顺序 5.7.2. 静态数据的初始化 5.7.3. 显式的静态初始化 5.7.4. 非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面 附录A 补充材料 可下载的补充材料 Thinking in C:Java的基础 Java编程思想 研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计 Python 我的著作列表 索引 |