×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
On Java 中文版 基础卷

On Java 中文版 基础卷

1星价 ¥63.6 (4.9折)
2星价¥63.6 定价¥129.8

温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>

暂无评论
图文详情
  • ISBN:9787115585011
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:23cm
  • 页数:28,811页
  • 出版时间:2022-03-01
  • 条形码:9787115585011 ; 978-7-115-58501-1

本书特色

基于Java 8、11、17,Thinking in系列书籍作者Bruce Eckel重讲Java的编程思想! 1.查漏宝典:涵盖Java关键特性的设计原理和应用方法 2.避坑指南:以产业实践的得失为鉴,指明Java开发者不可不知的设计陷阱 3.小白大神皆可读:适合不同层次的Java开发者反复翻阅 4.大咖领读:3位一线技术专家带你拆解书中难点内容,总结Java开发精要

内容简介

本书是Bruce Ecke1时隔15年, 继Thinking in Java之后又一*新力作, 基于Java的三个长期支持版 (Java 8、11、17) , 讲解Java的核心语法, 并对Java的核心变化进行详细描述。全书内容通俗易懂, 配合示例讲解逐步深入, 将抽象的概念简单化, 并结合实际开发需要, 从语言底层设计出发, 有效帮读者规避一些常见的开发陷阱。主体部分共22章, 内容包含对象\操作符控制流\初始化和清理\封装\复用\多态\接口\内部类集合\函数式编程流式编程\异常\代码校验\文件\字符串\泛型等。

目录

第 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


展开全部

作者简介

【作者简介】 布鲁斯.埃克尔(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 等语言体系,同时也是一名语言文字爱好者。 秦彬,现任腾讯游戏高级项目经理,曾翻译《体验引擎》《游戏设计梦工厂》《游戏制作的本质》等书。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航