有电书房店铺主页二维码
有电书房
微信扫描二维码,访问我们的微信店铺

Java经典实例(第五版)

178.20
运费: ¥ 5.00-22.00
库存: 300 件
Java经典实例(第五版) 商品图0
Java经典实例(第五版) 商品图1
Java经典实例(第五版) 商品图2
Java经典实例(第五版) 商品图3
Java经典实例(第五版) 商品缩略图0 Java经典实例(第五版) 商品缩略图1 Java经典实例(第五版) 商品缩略图2 Java经典实例(第五版) 商品缩略图3

商品详情

书名:Java经典实例(第五版)
书号:978-7-5239-0393-3
定价:198元
作者:[加]伊恩·F. 达尔文(Ian F. Darwin) 著 苏钰涵 林琪 译
出版时间:2025-12-16
出版社:中国电力出版社
页码: 744    字数(千字):860
开本:16开    版次:1    印次:1


品牌介绍

中国电力出版社成立于 1951 年,作为中国成立最早的中央科技出版社之一,曾隶属于水利电力部、能源部、电力工业部、国家电力公司,现为国家电网公司所属的科技出版社,在电气技术专业出版领域享有极高的声誉。该社作为以图书出版为主体,音像、电子出版物、期刊、网络出版共同发展的大型出版企业,以强大的出版资源和高素质的专业队伍,致力于向读者提供包括电力工程、电气工程、建筑工程、电子技术、信息技术、外语、大中专教材、家教等学科门类齐全的权威出版物,也竭力为广大师生提供精品教材,是教育部和北京市教委规划教材的出版基地之一。


编辑推荐

随着Java继续发展和演进,这本书也在不断修订和改版。利用这本指南,你会快速掌握数百个实战技巧,内容涵盖诸多Java主题。作者Ian Darwin将帮助开发人员快速上手,掌握从字符串处理、函数式编程到网络通信和AI等一切有用的技术。

如果你熟悉Java的任何一个版本,这本经典实例将增进你的Java知识,让你了解Java的最新变化,包括如何在日常开发中运用这些知识。每个技巧都包含完整的代码解决方案,可以免费使用这些代码,另外每个技巧还讨论了如何做以及为什么可以这样做。

专家推荐

“Ian非常出色地讨论了Java开发人员可能遇到的每一个主题。强烈推荐阅读这本书,及时掌握最新Java版本的特性,因为可以应用这些新特性解决老问题。” ——Andrew Slice, Red Hat 

“每个Java开发团队都应该至少有这样一本书。”——George Ball, J&G Services Ltd. 

“本书第五版对程序员日常生活中的经典解决方案做了充分更新。它提供了大量关于最新Java版本的详细信息,使你能快速掌握从I/O到网络编程的正确方法,并提供了经过精心研究、简洁明了的技巧。” ——Jason R. Clark, 软件工程师, GitHub

产品特色

Java开发常见问题与解决方案。

作者简介

Ian Darwin在软件行业积累了丰富的经验,从Java的第一版直到现在,从桌面版、企业版到移动版,他在很多平台和不同类型的软件上使用过Java。

内容简介

如果你熟悉Java的任何一个版本,这本经典实例将增进你的Java知识,让你了解Java的最新变化,包括如何在日常开发中运用这些知识。每个技巧都包含完整的代码解决方案,可以免费使用这些代码,另外每个技巧还讨论了如何做以及为什么可以这样做。本书的主要内容有:学习如何应用众多Java API,包括新老版本。使用最新Java版本的新语言特性。理解所维护的代码。使用标准API和最佳实践开发代码。探索当前Java开发的全新世界。

目录

目录

前言 1

第1 章 入门:编译和运行Java 17

1.0 引言 .17

1.1 编译和运行Java:标准JDK 18

1.2 用无类Main 实现Hello, World 20

1.3 下载和使用代码示例 24

1.4 用IDE 编译、运行和测试 30

1.5 用JShell 11 探索Java .38

1.6 有效使用CLASSPATH 41

1.7 用Javadoc 建立类文档 43

1.8 超越Javadoc: 注解/ 元数据 .51

1.9 打包和运行JAR 文件 .53

1.10 创建支持多个Java 版本的JAR 56

1.11 将Web 层组件打包到WAR 文件 59

1.12 编译和运行Java:GraalVM 提高性能 61

1.13 获得环境、操作系统和运行时环境信息 64

第2 章 软件开发、测试与维护 .73

2.0 引言 .73

2.1 设计应用:包和模块 73

2.2 使用Java 模块系统 .76

2.3 使用JPMS 创建模块 81

2.4 用Apache Maven 自动管理编译、测试和部署 .86

2.5 用Gradle 自动管理编译、测试和部署 92

2.6 用Maven 和Gradle 自动实现依赖管理.95

2.7 处理废弃警告 100

2.8 批量重构处理警告和迁移 .102

2.9 利用单元测试维护代码正确性:JUnit 105

2.10 用模拟对象和Mockito 隔离测试目标 109

2.11 日志:网络或本地  111

2.12 创建SLF4J . 113

2.13 使用Log4j 生成网络日志  115

2.14 用java.util.logging 生成网络日志 121

2.15 利用持续集成维护代码 126

2.16 性能测量(计时) 131

2.17 用jlink 创建定制JDK 发布包 135

2.18 用jpackage 创建平台特定安装工具 137

第3 章 字符串相关问题  141

3.0 引言 141

3.1 利用子串、词法分析和修剪方法分解字符串 145

3.2 用Formatter 和printf 格式化字符串 148

3.3 用StringBuilder 建立字符串 155

3.4 逐字符处理字符串 .158

3.5 字符串对齐、缩进和取消缩进 160

3.6 Unicode 字符与字符串之间的转换 165

3.7 按单词或字符逆转字符串 .167

3.8 展开和压缩制表符 .169

3.9 控制大小写 174

3.10 为字符串增加不可打印字符 176

3.11 使用国际化资源创建消息 178

3.12 使用特定的本地化环境 181

3.13 创建资源包 .183

3.14 程序:一个简单的文本格式化工具 184

第4 章 使用正则表达式实现字符串匹配  185

4.0 引言 185

4.1 正则表达式语法 .188

4.2 检查字符串是否与正则表达式匹配195

4.3 分组:指定正则表达式的部分 200

4.4 查找匹配文本 202

4.5 替换匹配文本 205

4.6 打印一个模式的所有匹配 .209

4.7 正则表达式中控制大小写 212

4.8 匹配重音或组合字符 214

4.9 匹配文本中的换行符 215

4.10 程序:完整的Grep .217

第5 章 数字 219

5.0 引言 219

5.1 检查字符串是否是一个合法的数 222

5.2 数字与对象的转换 .224

5.3 直接使用分数而不使用浮点数 226

5.4 处理浮点数 227

5.5 格式化数字 232

5.6 二进制、八进制、十进制和十六进制间的转换 .238

5.7 处理整数序列 239

5.8 格式化为正确的复数形式 .241

5.9 生成随机数 243

5.10 矩阵乘法 247

5.11 用Vector 操作优化大数算术运算 .249

5.12 使用复数 253

5.13 处理非常大的数 256

5.14 程序:TempConverter 258

第6 章 日期和时间 . 261

6.0 引言 261

6.1 获得当天日期 265

6.2 格式化日期和时间 .266

6.3 日期/ 时间和纪元秒之间的转换 273

6.4 将字符串解析为日期 274

6.5 两个日期之差 277

6.6 日期加上或减去一个时间段 .279

6.7 计算重复事件 280

6.8 计算涉及时区的日期 282

6.9 与遗留Date 和Calendar 类交互 .284

第7 章 Java 数据结构 287

7.0 引言 287

7.1 用数组建立数据结构 288

7.2 调整数组大小 290

7.3 用Arrays 类简化数组处理 292

7.4 集合框架.294

7.5 列表:类似数组,但更动态 .296

7.6 自己的类中使用泛型类型:堆栈演示 .301

7.7 如何迭代?所有迭代方法 .306

7.8 用Set 避免重复值 .309

7.9 用Hashtable 和HashMap 建立映射 . 311

7.10 在Properties 和Preferences 中存储字符串 314

7.11 集合排序 319

7.12 在集合中查找对象 326

7.13 Collection 与数组的转换 .329

7.14 使自己的数据结构可迭代330

7.15 多维结构 333

第8 章 面向对象技术  337

8.0 引言 337

8.1 对象方法:用toString() 格式化对象,用equals 比较对象341

8.2 构造器简化:super() 前的语句 .349

8.3 使用内部类 350

8.4 用Record(或Lombok)简化数据对象 352

8.5 通过接口提供回调 .356

8.6 多态/ 抽象方法 360

8.7 用默认、静态和私有方法改进接口362

8.8 使用类型安全的枚举 364

8.9 使用类型模式匹配 .369

8.10 用“Optional”避免NPE 371

8.11 用密封类型控制派生 .374

8.12 强制单例模式 376

8.13 创建自己的异常 379

8.14 使用依赖注入 380

8.15 结合Java 特性实现面向数据编程 383

第9 章 函数式编程技术:函数接口、流和并行集合  387

9.0 引言 387

9.1 使用Lambda/Closures 而不是内部类 390

9.2 使用lambda 预定义接口或创建自己的接口 396

9.3 用Stream 简化处理 398

9.4 用Collector 简化流 400

9.5 用流采集器简化流 404

9.6 用你自己的流采集器简化流 406

9.7 用并行流和集合提高吞吐量 .408

9.8 利用方法引用将已有代码用作为函数式接口 410

9.9 Java Mixins:方法混入 415

9.10 使用Flow 和响应式流实现函数式编程 417

第10 章 输入和输出:读、写和目录技巧 . 421

10.0 引言 421

10.1 发现文件系统路径 424

10.2 获取和设置文件与目录信息:Files 和Path 426

10.3 创建和删除文件或目录 438

10.4 改变文件名或其他属性 443

10.5 关于InputStream/OutputStream 和Reader/Writer .446

10.6 读写文件 448

10.7 用StreamTokenizer、Scanner 和Parser 扫描输入 452

10.8 从标准输入或控制台/ 控制终端读取 461

10.9 复制文件 465

10.10 重新分配标准流.467

10.11 写时复制流 468

10.12 读/ 写不同的字符集 471

10.13 讨厌的行尾字符.472

10.14 当心依赖平台的文件代码 .473

10.15 读写JAR 或ZIP 归档 .474

10.16 使用getResource() 和getResourceAsStream() 采用文件系统中立的

方式读取文件 .479

10.17 创建瞬时/ 临时文件 483

10.18 获得目录的根 .485

10.19 使用文件监视器服务得到文件变更通知 487

10.20 遍历文件树(类似Find) 489

第11 章 Java 线程 . 493

11.0 引言 493

11.1 在不同线程中运行代码 495

11.2 使用虚拟线程提高性能 502

11.3 交会和超时 .504

11.4 用synchronized 关键字同步线程.505

11.5 用锁简化同步 509

11.6 用一个写者多个读者锁定  511

11.7 线程间共享数据—— ThreadLocal 和ScopedValue:结构化并发 514

11.8 用Queue 接口简化生产者/ 消费者 518

11.9 用Fork/Join 优化并行处理 .521

11.10 调度任务:将来,编辑器的后台保存 526

第12 章 数据科学与R . 531

12.0 引言 531

12.1 在Apache Spark 中使用数据 .532

12.2 交互式使用R 536

12.3 比较/ 选择R 实现 539

12.4 在Java 应用中使用R:Renjin .540

12.5 从R 会话使用Java .543

12.6 在Web 应用中使用R 544

第13 章 机器学习/ 人工智能 . 547

13.0 引言 547

13.1 一些主要AI 软件 550

13.2 直接使用ChatGPT .555

13.3 通过LangChain4j 使用ChatGPT 558

13.4 用LangChain4j 建议AI 服务 560

13.5 用Shadows 转换 562

13.6 用LangChain4j 生成图像 564

13.7 混合媒体提示:使用LangChain4j 解释图像 566

13.8 使用ollama 本地运行AI .568

第14 章 网络客户端  571

14.0 引言 571

14.1 HTTP/REST Web 客户端—— Modern API .574

14.2 连接socket 服务器 .577

14.3 查找和报告网络地址 .578

14.4 处理网络错误 581

14.5 读写文本数据 583

14.6 读写二进制或串行化数据585

14.7 互联网的明信片:使用UDP 数据报 .589

14.8 URI, URL 还是URN .592

14.9 程序:基于Socket 的聊天客户端 594

第15 章 服务器端Java  597

15.0 引言 597

15.1 打开服务器Socket598

15.2 查找网络接口 601

15.3 返回响应(字符串或二进制数据) .603

15.4 处理多个客户端 607

15.5 提供HTTP 协议  611

15.6 用TLS(原来的SSL)和JSSE 保护Web 服务器 .615

15.7 用JAX-RS 创建REST 服务/ 微服务 618

15.8 UNIX 域Socket —— 甚至包括Windows ! 622

第16 章 处理JSON 数据  627

16.0 引言 627

16.1 直接生成JSON .629

16.2 用Jackson 解析和写JSON .630

16.3 用org.json 解析和写JSON .633

16.4 用JSON-B 解析和写JSON 636

16.5 用JSON Pointer 查找JSON 元素 637

第17 章 反射或“名为Class 的类” 641

17.0 引言 641

17.1 动态加载和实例化一个类642

17.2 打印类信息 .645

17.3 获得类描述符 647

17.4 查找和使用方法和字段 648

17.5 通过MethodHandle 调用类成员 653

17.6 列出一个包中的类 654

17.7 访问同一个类中的嵌套成员 657

17.8 通过反射访问私有方法和字段 .659

17.9 用ClassLoader 从头构造一个类 660

17.10 用JavaCompiler 从头构造一个类 .662

17.11 用Class-File API 构造或修改类文件 665

17.12 使用和定义注解.670

17.13 通过注解查找类似插件的类 674

17.14 一个计时程序 .677

17.15 程序:CrossRef .679

第18 章 结合使用Java 和其他语言  681

18.0 引言 681

18.1 从Java 运行外部程序 682

18.2 运行程序并捕获输出 .687

18.3 通过javax.script 调用其他语言 691

18.4 用GraalVM 混合语言 695

18.5 用外部函数与内存API 在Java 和原生代码间来回调用 .697

18.6 通过原生代码(JNI) 调用其他语言 .701

18.7 从原生代码调用Java .708

后记 . 711

附录 Java 前世今生  713


有电书房店铺主页二维码
有电书房
扫描二维码,访问我们的微信店铺

Java经典实例(第五版)

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏