On Java 基础卷 中文版
新华书店全新正版,极速发货,假一罚十,可开电子发票,请放心购买。
¥
50.58
3.9折
¥
129.8
全新
库存44件
作者 (美)布鲁斯·埃克尔
出版社 人民邮电出版社
ISBN 9787115585011
出版时间 2022-03
装帧 精装
开本 16开
定价 129.8元
货号 1202610457
上书时间 2024-10-14
商品详情
品相描述:全新
商品描述
作者简介 【作者简介】 布鲁斯·埃克尔(Bruce Eckel) C++ 标准委员会的创始成员之一,技术顾问,专注于编程语言和软件系统设计方面的研究,常活跃于世界各大技术研讨会。他自 1986 年以来,累计出版 Thinking in C++、Thinking in Java、On Java 8 等十余部计算机,曾多次荣获 Jolt 很好图书奖(被誉为“软件业界的奥斯卡”),其代表作 Thinking in Java 被译为中文、日文、俄文、意大利文、波兰文、韩文等十几种语言,在世界范围内产生了广泛影响。 【译者简介】 陈德伟,深耕软件研发十余年,目前专注于金融系统研发工作。 臧秀涛,InfoQ 前会议内容总编。现于涛思数据负责开源时序数据库 TDengine 的社区生态。代表译作有《Java性能非常不错指南》《C++ API 设计》《Groovy 程序设计》等。 孙卓,现任职于百度健康研发中心,百度技术委员会成员。从业十余年,熟悉 Java、PHP 等语言体系,同时也是一名语言文字爱好者。 秦彬,现任腾讯游戏不错项目经理,曾翻译《体验引擎》《游戏设计梦工厂》《游戏制作的本质》等书。 目录 第1章 什么是对象/001 1.1抽象的历程/002 1.2 对象具有接口/003 1.3 对象可以提供服务/005 1.4 隐藏的实现/006 1.5 复用实现/008 1.6 继承/008 is-a关系与is-like-a关系/012 1.7 多态/013 1.8 单根层次结构/016 1.9 集合/017 参数化类型(泛型)/018 1.10 对象的创建和生命周期/019 1.11 异常处理/021 1.12 总结/022 第2章 安装Java和本书示例/023 2.1 编辑器/023 2.2 shell/024 2.2.1 运行shell/024 2.2.2 目录(文件夹)/025 2.2.3 shell基础操作/025 2.3 安装Java/026 2.4 确认安装成功/027 2.5 安装和运行本书示例/028 Gradle基础任务/028 第3章 对象无处不在/029 3.1 通过引用操作对象/030 3.2 必须创建所有对象/031 3.2.1 数据保存在哪里/031 3.2.2 特殊情况:基本类型/032 3.2.3 Java中的数组/034 3.3 注释/034 3.4 无须销毁对象/035 3.4.1 作用域/035 3.4.2 对象的作用域/036 3.5 使用class关键字创建新类型/037 字段/037 3.6 方法、参数以及返回值/039 参数列表/039 3.7 编写Java程序/041 3.7.1 名称可见性/041 3.7.2 使用其他组件/042 3.7.3 static关键字/043 3.8 你的个Java程序/045 编译和运行/047 3.9 编程风格/048 3.10 总结/049 第4章 操作符/050 4.1 使用Java操作符/050 4.2 优先级/051 4.3 赋值/051 方法调用中的别名/053 4.4 算术操作符/054 一元加操作符和一元减操作符/055 4.5 自动递增和自动递减/056 4.6 关系操作符/057 测试对象是否相等/057 4.7 逻辑操作符/061 短路/062 4.8 字面量/063 4.8.1 字面量里的下划线/065 4.8.2 科学记数法(又称“指数记数法”)/066 4.9 按位操作符/067 4.10 移位操作符/067 4.11 三元操作符/071 4.12 字符串操作符+和+=/072 4.13 使用操作符时常犯的错误/073 4.14 类型转换操作符/074 4.14.1 截尾和舍入/075 4.14.2 提升/076 4.15 Java没有sizeof()/076 4.16 操作符小结/076 4.17 总结/081 第5章 控制流/082 5.1 true和false/082 5.2 if-else/083 5.3 迭代语句/084 5.3.1 do-while/085 5.3.2 for/085 5.3.3 逗号操作符/086 5.4 for-in语法/087 5.5 return/089 5.6 break和continue/090 5.7 臭名昭著的goto/091 5.8 switch/095 5.9 字符串作为选择器/096 5.10 总结/098 第6章 初始化和清理/099 6.1 用构造器保证初始化/100 6.2 方法重载/102 6.2.1 区分重载的方法/103 6.2.2 使用基本类型的重载/104 6.2.3 通过返回值区分重载方法/107 6.3 无参构造器/108 6.4 this关键字/109 6.4.1 在构造器中调用构造器/111 6.4.2 static的含义/112 6.5 清理:终结和垃圾收集/113 6.5.1 finalize()的作用/114 6.5.2 你必须执行清理/115 6.5.3 终止条件/115 6.5.4 垃圾收集器的工作原理/117 6.6 成员初始化/120 指定初始化/121 6.7 构造器初始化/122 6.7.1 初始化顺序/123 6.7.2 静态数据的初始化/124 6.7.3 显式的静态初始化/126 6.7.4 非静态实例初始化/127 6.8 数组初始化/128 6.8.1 动态数组创建/129 6.8.2 可变参数列表/132 6.9 枚举类型/136 6.10 新特性:局部变量类型推断/138 6.11 总结/140 第7章 实现隐藏/141 7.1 package:库单元/142 7.1.1 代码组织/144 7.1.2 创建专享的包名/145 7.1.3 定制工具库/148 7.1.4 用import来改变行为/149 7.1.5 关于包的忠告/150 7.2 Java访问权限修饰符/150 7.2.1 包访问/150 7.2.2 public:接口访问权限/151 7.2.3 private:你无法访问它/153 7.2.4 protected:继承访问权限/154 7.2.5 包访问权限与公共构造器/155 7.3 接口和实现/156 7.4 类的访问权限/157 7.5 新特性:模块/160 7.6 总结/162 第8章 复用/164 8.1 组合语法/165 8.2 继承语法/167 初始化基类/169 8.3 委托/171 8.4 组合与继承相结合/173 8.4.1 确保正确的清理/175 8.4.2 名称隐藏/177 8.5 选择组合还是继承/178 8.6 protected关键字/180 8.7 向上转型/181 再论组合与继承/182 8.8 final关键字/182 8.8.1 final数据/183 8.8.2 final方法/186 8.8.3 final类/188 8.8.4 关于final的忠告/189 8.9 初始化及类的加载/190 继承与初始化/190 8.10 总结/191 第9章 多态/193 9.1 再论向上转型/194 忘记对象类型/195 9.2 难点/196 9.2.1 方法调用绑定/197 9.2.2 产生正确的行为/197 9.2.3 可扩展性/201 9.2.4 陷阱:“重写”private方法/203 9.2.5 陷阱:字段与静态方法/205 9.3 构造器和多态/206 9.3.1 构造器的调用顺序/206 9.3.2 继承与清理/208 9.3.3 构造器内部的多态方法行为/213 9.4 协变返回类型/215 9.5 用继承进行设计/216 9.5.1 替换与扩展/217 9.5.2 向下转型与反射/218 9.6 总结/220 第10章 接口/221 10.1 抽象类和抽象方法/221 10.2 接口定义/226 10.2.1 默认方法/228 10.2.2 多重继承/230 10.2.3 接口中的静态方法/233 10.2.4 作为接口的Instrument/234 10.3 抽象类与接口/236 10.4 接近解耦/237 10.5 组合多个接口/242 10.6 通过继承来扩展接口/244 组合接口时的名称冲突/245 10.7 适配接口/246 10.8 接口中的字段/249 初始化接口中的字段/249 10.9 嵌套接口/250 10.10 接口和工厂/252 10.11 新特性:接口的private方法/255 10.12 新特性:密封类和密封接口/256 10.13 总结/259 第11章 内部类/260 11.1 创建内部类/261 11.2 到外部类的链接/262 11.3 使用.this和.new/264 11.4 内部类和向上转型/266 11.5 在方法和作用域中的内部类/267 11.6 匿名内部类/269 11.7 嵌套类/273 11.7.1 接口中的类/274 11.7.2 从多层嵌套的内部类中访问外部成员/275 11.8 为什么需要内部类/276 11.8.1 闭包与回调/278 11.8.2 内部类与控制框架/281 11.9 继承内部类/287 11.10 内部类可以被重写吗/287 11.11 局部内部类/289 11.12 内部类标识符/291 11.13 总结/291 第12章 集合/292 12.1 泛型和类型安全的集合/293 新特性:类型推断和泛型/296 12.2 基本概念/297 12.3 添加一组元素/298 12.4 打印集合/300 12.5 List/302 12.6 Iterator/306 ListIterator/309 12.7 LinkedList/310 12.8 Stack/312 12.9 Set/314 12.10 Map/318 12.11 新特性:记录(record)类型/321 12.12 Queue/325 PriorityQueue/327 12.13 Collection和Iterator的对比/328 12.14 for-in和迭代器/332 适配器方法惯用法/334 12.15 总结/338 第13章 函数式编程/342 13.1 旧方式与新方式/344 13.2 lambda表达式/346 递归/348 13.3 方法引用/349 13.3.1 Runnable/350 13.3.2 未绑定方法引用/351 13.3.3 构造器方法引用/353 13.4 函数式接口/354 13.4.1 带有更多参数的函数式接口/361 13.4.2 解决缺乏基本类型函数式接口的问题/361 13.5 高阶函数/363 13.6 闭包/364 内部类作为闭包/369 13.7 函数组合/370 13.8 柯里化和部分求值/372 13.9 纯函数式编程/373 13.10 总结/374 第14章 流/375 14.1 Java 8对流的支持/377 14.2 流的创建/378 14.3 中间操作/388 14.4 Optional类型/395 14.5 终结操作/405 14.6 小结/415 第15章 异常/416 15.1 概念/417 15.2 基本的异常/418 异常参数/419 15.3 捕捉异常/420 15.4 创建自己的异常/421 异常与日志记录/424 15.5 异常说明/427 15.6 捕捉任何异常/428 15.7 标准Java异常/439 特例:RuntimeException/440 15.8 新特性:更好的NullPointerException报告机制/441 15.9 使用finally执行清理/443 15.10 异常的约束/449 15.11 构造器/452 15.12 try-with-resources语句/456 15.13 异常匹配/464 15.14 其他可选方式/465 15.15 异常使用指南/473 15.16 小结/473 附记 异常的奇异世界/474 第16章 代码校验/476 16.1 测试/476 16.2 前置条件/482 16.3 测试驱动开发/498 测试驱动与测试优先/505 16.4 日志/505 日志级别/507 16.5 调试/508 16.6 基准测试/511 16.7 分析与优化/520 优化指南/520 16.8 样式检查/521 16.9 静态错误分析/521 16.10 代码审查/521 16.11 结对编程/522 16.12 重构/522 重构的基础/522 16.13 持续集成/523 16.14 总结/525 第17章 文件/526 17.1 文件和目录路径/527 17.2 目录/533 17.3 文件系统/537 17.4 监听Path/538 17.5 查找文件/541 17.6 读写文件/543 17.7 小结/546 第18章 字符串/547 18.1 不可变的字符串/547 18.2 重载+与StringBuilder/548 18.3 无意识的递归/553 18.4 对字符串的操作/555 18.5 格式化输出/556 18.6 新特性:文本块/563 18.7 正则表达式/565 18.8 扫描输入/584 18.9 StringTokenizer/587 18.10 总结/588 第19章 反射/589 19.1 为什么需要反射/589 19.2 Class对象/592 19.3 转型前检查/603 19.4 注册工厂/614 19.5 Instanceof与Class的等价性/616 19.6 运行时的类信息/618 类方法提取器/619 19.7 动态代理/621 19.8 使用Optional/625 19.9 接口和类型信息/633 19.10 总结/639 第20章 泛型/641 20.1 和C++的对比/642 20.2 简单泛型/643 20.3 泛型接口/650 20.4 泛型方法/653 20.5 构建复杂模型/663 20.6 类型擦除的奥秘/665 20.7 对类型擦除的补偿/676 20.8 边界/686 20.9 通配符/689 20.10 问题/707 20.11 自限定类型/714 20.12 动态类型安全/721 20.13 异常/722 20.14 混型/724 20.15 潜在类型机制/730 20.16 对于缺少(直接的)潜在类型机制的补偿/736 20.17 Java 8中的辅助潜在类型机制/741 使用Supplier的泛型方法/743 20.18 总结:转型真的这么糟糕吗?/745 延伸阅读/747 第21 章 数组/748 21.1 数组为何特殊/749 一个用于显示数组的常用工具程序/751 21.2 数组是一等对象/752 21.3 返回数组/755 21.4 多维数组/757 21.5 数组和泛型/761 21.6 Arrays.fill()/764 21.7 Arrays.setAll()/765 21.8 增量生成器/766 21.9 随机数生成器/775 21.10 泛型和基本类型数组/783 21.11 修改已有的数组元素/787 21.12 关于数组并行/788 21.13 数组实用工具/790 21.14 数组复制/791 21.15 数组比较/794 21.16 流和数组/795 21.17 数组排序/796 21.18 用Arrays.binarySearch()进行二分查找/802 21.19 用parallelPrefix()进行累积计算/804 21.20 总结/806 补充内容/809 积极看待C++与Java的遗产/810 内容摘要 本书是布鲁斯·埃克尔时隔15年,继Thinking in Java之后又一力作,基于Java的3个长期支持版(Java 8、11、17),讲解Java核心语法,并对Java的核心变化进行详述。全书内容通俗易懂,配合示例讲解逐步深入,并结合实际开发需要,从语言底层设计出发,有效帮读者规避一些常见的开发陷阱。主体部分共22章,内容包含对象、操作符、控制流、初始化和清理、复用、多态、接口、内部类、集合、函数式编程、流、异常、代码校验、文件、字符串、泛型等。本书适合各个层次的Java开发者阅读,同时也可作为面向对象程序设计语言以及Java语言的参考教材。 主编推荐 基于Java 8、11、17,Thinking in系列书籍作者Bruce Eckel重讲Java的编程思想! 1.查漏宝典:涵盖Java关键特性的设计原理和应用方法 2.避坑指南:以产业实践的得失为鉴,指明Java开发者不可不知的设计陷阱 3.小白大神皆可读:适合不同层次的Java开发者反复翻阅 4.大咖领读:3位一线技术专家带你拆解书中难点内容,总结Java开发精要
— 没有更多了 —
以下为对购买帮助不大的评价