int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new IllegalStateException("Huh? " + day);
}
JDK12中的写法:
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException("Huh? " + day);
};
JDK12中极大的简化了switch的写法。同时使用Lambda表达式运算符->
来简化我们的处理。
类库
流处理
Streams中的API有一个新的收集器,由Collectors类提供。 可以使用teeing()
方法获得新的收集器。 teeing()
方法有三个参数:两个Collectors 和一个BiFunction。如下图:
输入流中的所有值都将传递到每个Collectors 中。 每个Collectors 的结果作为参数传递给BiFunction并生成最终结果。
示例就是计算平均值的例子
/* Assume Collectors is statically imported */
double average = Stream.of(1, 4, 2, 7, 4, 6, 5)
.collect(teeing(
summingDouble(i -> i),
counting(),
(sum, n) -> sum / n));
第一个Collectors 计算输入流的总和,而第二个Collectors 计算元素的数量。 BiFunction将总和除以元素计数以评估平均值。
java.io
InputStream skipNBytes(long n)
以上代码会跳过输入流中n个字节的数据。 如果n<=0,则不跳过任何字节。
java.text中
有一个新类CompactNumberFormat
。 这是NumberFormat
的子类 以紧凑的形式格式化十进制数。
紧凑形式的一个例子是将1,000,000写为1M,因此代码中只需要2个而不是9个字符。
JVM
一个低暂停时间的垃圾收集器
新增了一个名为 Shenandoah 的 GC 算法,通过与正在运行的 Java 线程同时进行垃圾收集工作来减少 GC 暂停时间。
G1 垃圾收集器的改进(G1的暂停时间最大的值的控制目标)
G1将堆空间(年轻代和老年代)划分成区域。 这样的做法是老年代可以在一次GC中不需要进行垃圾收集。 当G1需要收集时,它会选择它确定需要收集的区域。 这称为collection set (集合集) 。 在JDK 12之前,一旦在collection set (集合集)上开始工作,那么所有工作都必须完成,基本上是作为原子操作。 这样做的问题在于,有时候,由于应用程序使用堆空间的方式发生了变化,收集collection set (集合集)的垃圾最终会变得太大而且收集时间太长而导致暂停时间目标无法满足。
在JDK 12中,如果G1识别出这种情况,它将在collection set (集合集)开始工作中途中止收集,这样就不会影响应用程序继续为新对象分配空间。这样的话G1将更好地实现暂停时间的目标。
G1 垃圾收集器的增强
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ps://bbs.csdn.net/topics/618165277)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!