日期和API
摘要:Java1.0对日期和时间的支持只能依赖java.util.Date类,年份的起始选择是1900你那,月份的起始是从0开始计算的。它的返回值中包含了JVM的默认市区CET,即中欧时间。在Java1.1中使用java.util.Calendar类替代Date。同时格式化和解析日期的DateFormat
阅读全文
CompletableFuture
摘要:若你的意图是并发,而非并行,或者你的主要目标是在同一个CPU上执行几个松耦合的任务,充分利用CPU的核,让其足够忙碌,从而最大化程序的吞吐量,那么其实真正想做的避免因为等待远程服务的返回,或对数据库的查询而阻塞线程的执行,浪费计算资源。 Future接口在Java 5中引入,设计初衷是对将来某个时刻
阅读全文
用optional取代null
摘要:Java8引入了java.util.Optional<T>,它是一个封装的Optional值的类。变量存在时,Optional类只是对类简单封装。变量不存在时,缺失的值会被建模成一个空的Optional对象,由方法Optional.empty()返回。Optional.empty()是一个静态工厂方
阅读全文
默认方法
摘要:Java程序的接口是将相关方法按照约定组合到一起的方式,实现接口的类必须为接口中定义的每个方法提供一个实现,或从父类中继承它的实现。 Java8允许接口内声明静态方法,还引入了默认方法的功能。默认方法用default修饰。 变更对Java程序的影响大体可以分成三种类型的兼容性:二进制级的兼容,源代码
阅读全文
重构,测试和调试
摘要:利用Lambda表达式,方法引用以及Stream改善程序代码的可读性: 重构代码,用Lambda表达式取代匿名类 用方法引用重构Lambda表达式 用Stream API重构命令式的数据结构 从匿名类道Lambda表达式的转换 Runnable runner = new Runnble(){ pub
阅读全文
流
摘要:流允许以声明性方式处理数据集合,并且流可以透明的并行处理。 List<String> lowCaloricDishsName = menu.stream().filter(d -> d.getCalories() < 400).sorted(comparing(Dish :: getCalories
阅读全文
行为参数化和Lambda表达式
摘要:行为参数化是指拿出一个代码块把他准备好却不执行它。这个代码块以后可以被程序的其他部分调用,意味着你可以推迟这块代码的执行。方法接受多种行为作为参数,并在内部使用来完成不同的行为。行为参数话的好处在于可以把迭代要筛选的集合的逻辑与对集合中的每个元素应用的行为区分开来。 Java的匿名类可以同时声明和实
阅读全文
简介
摘要:Java8提供了一个新的API:Stream。Streams是Java8表示有序数据并能灵活的表示这些数据是否可以并行处理的新方式。流是一系列数据项,一次只生成一项。Stream API的很多方法可以链接起来形成一个复杂的流水线。Java8可以透明的把输入不相关的部分拿到几个CPU内核上去分别执行你
阅读全文