新書推薦:
![傻钱:社交浪潮与散户革命](http://103.6.6.66/upload/mall/productImages/24/30/9787521760552.jpg)
《
傻钱:社交浪潮与散户革命
》
售價:HK$
78.2
![猎头高情商沟通实务](http://103.6.6.66/upload/mall/productImages/24/31/9787301352984.jpg)
《
猎头高情商沟通实务
》
售價:HK$
56.4
![桃花夭夭,灼一世芳华:古代蕙心女子的诗情词韵](http://103.6.6.66/upload/mall/productImages/24/29/9787547064351.jpg)
《
桃花夭夭,灼一世芳华:古代蕙心女子的诗情词韵
》
售價:HK$
48.3
![生活在低处](http://103.6.6.69/upload/mall/productImages/y24/8/9787572619830.jpg)
《
生活在低处
》
售價:HK$
64.4
![长颈鹿与少年(全球销量超过50万册。基于真实历史事件创作)](http://103.6.6.66/upload/mall/productImages/24/29/9787559676689.jpg)
《
长颈鹿与少年(全球销量超过50万册。基于真实历史事件创作)
》
售價:HK$
57.4
![近代早期海洋文化史](http://103.6.6.69/upload/mall/productImages/y24/8/9787208188488.jpg)
《
近代早期海洋文化史
》
售價:HK$
112.7
![怪诞行为学2:非理性的积极力量](http://103.6.6.66/upload/mall/productImages/24/30/9787521766547.jpg)
《
怪诞行为学2:非理性的积极力量
》
售價:HK$
78.2
![锦衣玉令](http://103.6.6.66/upload/mall/productImages/24/31/9787229180416.jpg)
《
锦衣玉令
》
售價:HK$
112.7
|
編輯推薦: |
1.经典Java作品《Java核心技术》的速学版本,降低学习门槛,帮助读者更容易学习Java,更快地把相关知识应用到实际工作中;
2.Java入门优选书籍,涵盖Java 8-Java 17的新特性,作者Java大神霍斯特曼;
3.快速切入主题,展示解决编程问题所需的核心知识,既扎实覆盖Java编程的基础知识,更独具匠心地带领读者探索和实践Java的诸多新特性;
4.提供丰富的示例,还给出了大量注释、提示和警告,这些都是作者实际经验的总结,对编程实践大有裨益。
|
內容簡介: |
本书是经典 Java开发基础书《Java核心技术》的速学版本。本书首先介绍了Java 语言的基础知识,包含接口、Lambda 表达式、继承、反射、异常处理、断言、日志、泛型编程、容器等关键概念;其次介绍了流、输人和输出处理、并发、注解、日期和时间 API、国际化、编译和脚本、Java 平台模块系统等高级特性。本书不仅可以让读者深入了解 Java 编程的基础知识和核心概念,还可以帮助读者掌握 Java 应用程序开发所需的基本技能。本书涵盖了Java17中更新的内容,提供了许多实用的示例代码,还给出了基于作者实际经验的提示、注意和警告。
本书可供希望深入掌握Java应用的初学者使用,也适合打算将Java 应用到实际项目中的编程人员使用。
|
關於作者: |
[美]凯·S.霍斯特曼(Cay S.Horstmann) 《Java 核心技术(原书第 12 版)》两卷本(Core Java, Volumes I and II, Twelfth Edition)的主要作者,他还为专业编程人员和计算机科学专业的学生撰写了十多本书。 他是美国圣何塞州立大学计算机专业的科学荣誉退休教授,也是一名Java Champion。
|
目錄:
|
第 1 章 基本编程结构 1
1.1 我们的第 一个程序 1
1.1.1 剖析“Hello, World”程序 1
1.1.2 编译和运行 Java 程序 2
1.1.3 方法调用 4
1.1.4 JShell 4
1.2 基本类型 6
1.2.1 有符号整数类型 7
1.2.2 浮点类型 7
1.2.3 char 类型 8
1.2.4 boolean 类型 8
1.3 变量 8
1.3.1 变量声明 8
1.3.2 标识符 9
1.3.3 初始化 9
1.3.4 常量 9
1.4 算术运算 10
1.4.1 赋值 11
1.4.2 基本算术运算符 11
1.4.3 数学方法 12
1.4.4 数值的类型转换 12
1.4.5 关系运算符和逻辑运算符 13
1.4.6 大数 14
1.5 字符串 14
1.5.1 拼接 14
1.5.2 子串 15
1.5.3 字符串比较 15
1.5.4 数值和字符串的相互转换 16
1.5.5 字符串 API 16
1.5.6 码点和代码单元 18
1.5.7 文本块 19
1.6 输入和输出 20
1.6.1 读取输入 20
1.6.2 格式化输出 21
1.7 控制流 22
1.7.1 分支 23
1.7.2 switch 语句 23
1.7.3 循环 24
1.7.4 break 和 continue 25
1.7.5 局部变量的作用域 26
1.8 数组和数组列表 27
1.8.1 使用数组 27
1.8.2 数组构造 28
1.8.3 数组列表 28
1.8.4 基本类型的封装类 29
1.8.5 增强 for 循环 30
1.8.6 复制数组和数组列表 30
1.8.7 数组算法 31
1.8.8 命令行参数 31
1.8.9 多维数组 31
1.9 功能分解 33
1.9.1 声明和调用静态方法 33
1.9.2 数组参数和返回值 33
1.9.3 可变参数 34
练习 34
第 2 章 面向对象编程 36
2.1 使用对象 36
2.1.1 访问器方法和修改器方法 37
2.1.2 对象引用 38
2.2 实现类 39
2.2.1 实例变量 39
2.2.2 方法头 39
2.2.3 方法体 39
2.2.4 实例方法调用 40
2.2.5 this 引用 40
2.2.6 按值调用 41
2.3 对象构造 42
2.3.1 实现构造器 42
2.3.2 重载 42
2.3.3 从一个构造器调用另一个构造器 43
2.3.4 默认初始化 43
2.3.5 实例变量初始化 43
2.3.6 final 实例变量 44
2.3.7 无参数构造器 44
2.4 记录 44
2.4.1 记录的概念 45
2.4.2 构造器:标准的、自定义的和简洁的 46
2.5 静态变量和静态方法 46
2.5.1 静态变量 46
2.5.2 静态常量 47
2.5.3 静态初始化块 47
2.5.4 静态方法 47
2.5.5 工厂方法 48
2.6 包 49
2.6.1 包声明 49
2.6.2 jar 命令 49
2.6.3 类路径 50
2.6.4 包访问 51
2.6.5 导入类 51
2.6.6 静态导入 52
2.7 嵌套类 52
2.7.1 静态嵌套类 52
2.7.2 内部类 53
2.7.3 内部类的特殊语法规则 54
2.8 文档注释 55
2.8.1 注释插入 55
2.8.2 类注释 56
2.8.3 方法注释 56
2.8.4 变量注释 56
2.8.5 通用注释 57
2.8.6 链接 57
2.8.7 包注释、模块注释和概述注释 57
2.8.8 注释提取 58
练习 58
第 3 章 接口和 Lambda 表达式 60
3.1 接口 60
3.1.1 使用接口 60
3.1.2 声明接口 61
3.1.3 实现接口 61
3.1.4 转换为接口类型 62
3.1.5 强制转换和 instanceof运算符 63
3.1.6 instanceof 的“模式匹配”形式 63
3.1.7 扩展接口 64
3.1.8 实现多个接口 64
3.1.9 常量 64
3.2 静态方法、默认方法和私有方法 64
3.2.1 静态方法 65
3.2.2 默认方法 65
3.2.3 解决默认方法冲突 65
3.2.4 私有方法 66
3.3 接口示例 66
3.3.1 Comparable 接口 67
3.3.2 Comparator 接口 68
3.3.3 Runnable 接口 68
3.3.4 用户界面回调 68
3.4 Lambda 表达式 69
3.4.1 Lambda 表达式的语法 69
3.4.2 函数式接口 70
3.5 方法引用和构造器引用 71
3.5.1 方法引用 71
3.5.2 构造器引用 71
3.6 处理 Lambda 表达式 72
3.6.1 实现延迟执行 72
3.6.2 选择函数式接口 73
3.6.3 实现自己的函数式接口 74
3.7 Lambda 表达式作用域和变量作用域 74
3.7.1 Lambda 表达式作用域 75
3.7.2 封闭作用域内访问变量 75
3.8 高阶函数 76
3.8.1 返回函数的方法 76
3.8.2 修改函数的方法 77
3.8.3 Comparator 方法 77
3.9 局部类和匿名类 78
3.9.1 局部类 78
3.9.2 匿名类 78
练习 79
第 4 章 继承与反射 81
4.1 扩展类 81
4.1.1 超类和子类 81
4.1.2 定义和继承子类方法 82
4.1.3 方法覆盖 82
4.1.4 子类构造 83
4.1.5 超类赋值 83
4.1.6 强制类型转换 84
4.1.7 匿名子类 84
4.1.8 带 super 的方法表达式 84
4.2 继承的层次结构 85
4.2.1 final 方法和 final 类 85
4.2.2 抽象方法和抽象类 85
4.2.3 受保护的访问 86
4.2.4 密封类 86
4.2.5 继承和默认方法 88
4.3 Object:宇宙级超类 88
4.3.1 toString 方法 89
4.3.2 equals 方法 90
4.3.3 hashCode 方法 91
4.3.4 克隆对象 92
4.4 枚举 94
4.4.1 枚举的方法 94
4.4.2 构造器、方法和字段 94
4.4.3 实例的主体 95
4.4.4 静态成员 95
4.4.5 switch 中的枚举 96
4.5 运行时类型信息和资源 96
4.5.1 Class 类 96
4.5.2 加载资源 98
4.5.3 类加载器 98
4.5.4 上下文类加载器 99
4.5.5 服务加载器 100
4.6 反射 101
4.6.1 枚举类的成员 101
4.6.2 检查对象 102
4.6.3 调用方法 102
4.6.4 构造对象 103
4.6.5 JavaBeans 103
4.6.6 使用数组 104
4.6.7 代理 105
练习 106
第 5 章 异常、断言和日志 108
5.1 异常处理 108
5.1.1 抛出异常 108
5.1.2 异常层次结构 109
5.1.3 声明检查型异常 110
5.1.4 捕获异常 110
5.1.5 带资源的 try 语句 111
5.1.6 finally 子句 112
5.1.7 重新抛出异常和链接异常 113
5.1.8 未捕获的异常和栈跟踪 114
5.1.9 抛出异常的 API 方法 114
5.2 断言 115
5.2.1 使用断言 115
5.2.2 启用和禁用断言 115
5.3 日志 116
5.3.1 是否应使用 Java 日志框架 116
5.3.2 日志记录基础 116
5.3.3 平台日志 API 117
5.3 4 日志记录配置 118
5.3.5 日志处理程序 118
5.3.6 过滤器和格式化器 120
练习 121
第 6 章 泛型编程 123
6.1 泛型类 123
6.2 泛型方法 124
6.3 类型限定 124
6.4 类型差异和通配符 125
6.4.1 子类型通配符 125
6.4.2 超类型通配符 126
6.4.3 带类型变量的通配符 127
6.4.4 无限定通配符 127
6.4.5 通配符捕获 128
6.5 Java 虚拟机中的泛型 128
6.5.1 类型擦除 128
6.5.2 强制类型转换插入 129
6.5.3 桥接方法 129
6.6 泛型的限制 130
6.6.1 无基本类型参数 130
6.6.2 运行时所有类型都是原始的 130
6.6.3 无法实例化类型变量 131
6.6.4 不能构造参数化类型的数组 132
6.6.5 类类型变量在静态上下文中无效 132
6.6.6 擦除后方法不能发生冲突 133
6.6.7 异常和泛型 133
6.7 反射和泛型 134
6.7.1 Class类 134
6.7.2 虚拟机中的泛型类型信息 135
练习 136
第 7 章 容器 138
7.1 容器框架概述 138
7.2 迭代器 140
7.3 集合 141
7.4 映射 142
7.5 其他容器 144
7.5.1 属性 144
7.5.2 位集 145
7.5.3 枚举集合和枚举映射 146
7.5.4 栈、队列、双向队列和优先队列 146
7.5.5 弱哈希映射 147
7.6 视图 147
7.6.1 小型容器 147
7.6.2 范围 148
7.6.3 不可修改视图 148
练习 149
第 8 章 流 151
8.1 从迭代到流操作 151
8.2 流的创建 152
8.3 filter、map 和 flatMap 方法 153
8.4 提取子流和组合流 155
8.5 其他流转换 155
8.6 简单约简 156
8.7 Optional 类型 156
8.7.1 生成替代值 156
8.7.2 值存在就消费值 157
8.7.3 流水线化 Optional 值 157
8.7.4 不使用 Optional 值的方式 157
8.7.5 创建 Optional 值 158
8.7.6 用 flatMap 合成 Optional 值函数 158
8.7.7 将 Optional 转换为流 159
8.8 收集结果 159
8.9 收集到映射中 160
8.10 分组和分区 161
8.11 下游收集器 161
8.12 约简操作 163
8.13 基本类型流 164
8.14 并行流 165
练习 166
第 9 章 输入和输出处理 168
9.1 输入/输出流、读取器和写入器 168
9.1.1 获取流 168
9.1.2 字节的读取 169
9.1.3 字节的写入 169
9.1.4 字符编码 170
9.1.5 文本输入 171
9.1.6 文本输出 172
9.1.7 二进制数据的读写 173
9.1.8 随机访问文件 173
9.1.9 内存映射文件 173
9.1.10 文件锁定 174
9.2 路径、文件和目录 174
9.2.1 路径 174
9.2.2 创建文件和目录 175
9.2.3 复制、移动和删除文件 176
9.2.4 访问目录条目 177
9.2.5 ZIP 文件系统 178
9.3 HTTP 连接 179
9.3.1 URLConnection 类和 HttpURLConnection 类 179
9.3.2 HTTP 客户端 API 180
9.4 正则表达式 181
9.4.1 正则表达式语法 181
9.4.2 检测匹配 183
9.4.3 查找所有匹配 184
9.4.4 分组 184
9.4.5 按分隔符拆分 185
9.4.6 替换匹配 185
9.4.7 标志 186
9.5 序列化 186
9.5.1 Serializable 接口 186
9.5.2 瞬态实例变量 187
9.5.3 readObject 和 writeObject方法 188
9.5.4 readExternal 和 writeExternal 方法 189
9.5.5 readResolve 和 writeReplace 方法 189
9.5.6 版本管理 190
9.5.7 反序列化和安全性 191
练习 192
第 10 章 并发编程 194
10.1 并发任务 194
10.1.1 运行任务 194
10.1.2 Future 196
10.2 异步计算 197
10.2.1 可完成 Future 197
10.2.2 组合可完成 Future 198
10.2.3 用户界面回调中的长时间运行任务 200
10.3 线程安全 201
10.3.1 可见性 201
10.3.2 竞争条件 202
10.3.3 安全并发策略 203
10.3.4 不可变类 204
10.4 并行算法 204
10.4.1 并行流 204
10.4.2 并行数组操作 205
10.5 线程安全数据结构 205
10.5.1 并发哈希映射 206
10.5.2 阻塞队列 206
10.5.3 其他线程安全数据结构 207
10.6 原子计数器和累加器 208
10.7 锁和条件 209
10.7.1 锁 209
10.7.2 synchronized 关键字 210
10.7.3 等待条件 211
10.8 线程 212
10.8.1 启动线程 212
10.8.2 线程中断 213
10.8.3 线程局部变量 214
10.8.4 其他线程特性 214
10.9 进程 215
10.9.1 创建进程 215
10.9.2 运行进程 216
10.9.3 进程句柄 217
练习 217
第 11 章 注解 221
11.1 使用注解 221
11.1.1 注解元素 221
11.1.2 多重注解和重复注解 222
11.1.3 注解声明 222
11.1.4 类型使用注解 223
11.1.5 使接收器显式 224
11.2 定义注解 224
11.3 标准注解 226
11.3.1 编译用注解 226
11.3.2 元注解 227
11.4 在运行时处理注解 228
11.5 源码级注解处理 230
11.5.1 注解处理器 230
11.5.2 语言模型 APl 230
11.5.3 使用注解生成源代码 231
练习 232
第 12 章 日期和时间 API 234
12.1 时间线 234
12.2 本地日期 235
12.3 日期调整器 237
12.4 本地时间 238
12.5 时区时间 238
12.6 格式化和解析 240
12.7 与遗留代码互操作 242
练习 243
第 13 章 国际化 244
13.1 区域设置 244
13.1.1 指定区域设置 245
13.1.2 默认区域设置 246
13.1.3 显示名称 247
13.2 数值格式 247
13.3 货币 248
13.4 日期和时间格式化 248
13.5 排序和规范化 249
13.6 消息格式化 250
13.7 资源包 251
13.7.1 组织资源包 252
13.7.2 包类 253
13.8 字符编码 253
13.9 首选项 254
练习 255
第 14 章 编译和脚本 256
14.1 编译器 API 256
14.1.1 调用编译器 256
14.1.2 启动编译任务 256
14.1.3 捕获诊断信息 257
14.1.4 从内存读取源文件 257
14.1.5 将字节码写入内存 257
14.2 脚本 API 258
14.2.1 获取脚本引擎 258
14.2.2 脚本求值 259
14.2.3 绑定 259
14.2.4 重定向输入和输出 259
14.2.5 调用脚本函数和方法 260
14.2.6 编译脚本 260
练习 261
第 15 章 Java 平台模块系统 262
15.1 模块的概念 262
15.2 给模块命名 263
15.3 模块化“Hello,World!”程序 264
15.4 对模块的需求 265
15.5 导出包 266
15.6 模块和反射式访问 267
15.7 模块化 JAR 269
15.8 自动模块 270
15.9 不具名模块 271
15.10 用于迁移的命令行标志 271
15.11 传递性需求和静态需求 272
15.12 限定导出和开放 273
15.13 服务加载 273
15.14 操作模块的工具 274
练习 276
|
|