1.1 Java怎么还在变
1.第10章 用Optional取代null2.10.1 如何为缺失的值建模3.10.2 Optional类入门4.10.3 应用Optional的几种模式5.10.4 使用Optional的实战示例6.第12章 新的日期和时间API7.1.2 Java中的函数
8.1.1 Java怎么还在变
9.第1章 为什么要关心Java810.12.3 处理不同的时区和历法11.12.2 操纵、解析和格式化日期12.12.1 LocalDate、LocalTime、Instant、Duration以及Period13.1.3 流14.2.2 行为参数化15.2.1 应对不断变化的需求16.第2章 通过行为参数化传递代码17.第3章 Lambda表达式18.3.1 Lambda管中窥豹19.3.2 在哪里以及如何使用Lambda20.3.3 把Lambda付诸实践:环绕执行模式21.2.3 对付啰嗦22.3.4 使用函数式接口23.3.5 类型检查、类型推断以及限制24.3.6 方法引用25.3.7 Lambda和方法引用实战26.3.8 复合Lambda表达式的有用方法27.3.9 数学中的类似思想28.4.4 流操作29.第4章 引入流30.4.1 流是什么31.4.2 流简介32.4.3 流与集合编程语言就像生态系统一样,新的语言会出现,旧语言则被取代,不同的语言有不同的适用方面。
- C和C++运行时占用资源少,常用于构建操作系统和各种嵌入式系统;但构建的程序安全性不佳,容易导致程序意外崩溃,暴露安全漏洞;
- Java和C#等安全型语言常用于业务应用开发;
在过去15年的时间里,Java使用占比较高,编程语言的流行度详见TIOBE排行榜
1.1.1 Java在编程语言生态系统中的位置
编程语言始终聚焦于更快、更为简洁、更易于维护的方式解决现有或者新的编程问题。
- 早期支持互联网applet和嵌入式应用,使Java在市场中占有一席之地;
- 随着机器性能提高,程序员时间更为宝贵,加上面向对象模型的大受欢迎,Java变得更为流行;
- Java编译成JVM字节码,一次编写,到处运行,扩展支持Scala或Groovy运行;
Java 8提供了更多的编程概念和工具,下面探讨三个编程概念背后的思想:
- 流处理;
- 行为参数化;
- 纯函数;
1.1.2 流处理
流是一系列数据项,一次只生成一项。
程序从输入流中读取数据项,处理后将数据项写入输出流。
一个程序的输出流可以作为另一个程序的输入流。
Linux/Unix中的管道|,连接指令,起始从标准输入stdin读取数据,最终把结果写入标准输出stdout。
例如cat file1 file2 | tr "[A-Z]" "[a-z]" | sort | tail -3
Java 8在java.util.stream中添加了Stream API,通过方法链接,形成复杂的流水线。
1.1.3 用行为参数化把代码传递给方法
在Unix示例中,基于sort命令使用自定义排序。
Java8之前,定义一个新类,实现排序方法,使用新类对象排序。
class Xxx {
public int compareUsingCustomerId(String inv1, String inv2) {
}
}
- 使用函数引用Xxx::compareUsingCustomerId;
- 若函数只使用一次,写成lambda表达式使用;
1.1.4 并行与共享的可变数据
纯函数/无副作用函数/无状态函数:不修改共享的可变数据,方便并行处理。
因为同步迫使代码按照顺序执行,与并行处理的宗旨相悖。
行为参数化和没有共享的可变数据是函数式编程范式的基石。
1.1.5 Java需要演变
Java的演变:
- 引入泛型,使用List
而不只是List,能在编译时发现更多错误,且代码更易读; - 使用for-each循环,而不用暴露Iterator迭代器写法;
- Java8的函数式编程,以及Stream API。
Java 8的演变反映了从之前侧重改变现有值的经典面向对象思想,转向函数式编程领域。
语言需要不断改进以跟进硬件的更新或满足程序员的期待。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· MySQL索引完全指南:让你的查询速度飞起来
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· 我用这13个工具,让开发效率提升了5倍!
· Coze工作流实战:一键生成鸡汤视频——厉害的人,早已戒掉情绪
· 商品中心—15.库存分桶扣减的技术文档
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· C++服务开发环境-万事开头难