1.5特性:
1)自动装箱与拆箱
2)枚举类型
3)静态导入:import static
引入了类中的静态属性跟静态方法,可以省去前缀,直接调用。
4)可变参数(varargs):...
其实也就是组装成一个数据。直接对数据进行操作。
5)内省(introspector):简单的理解为,简化反射机制,获取对应bean的操作。
6)泛型(Generic):
7)for-each循环体:for( :)
1.7特性:
1)switch可以使用String对象
2)<>(diamond)的类型推断增强
之前容器并没有指明特定的类型,都是以object对象来操作的,设计到强转类型,会有很多麻烦,所以增强类型推断,当然以前没有类型的情况还是支持的。
3)资源的自动关闭
以前操作各种资源(主要是各种流)都需要手动关闭,比如final方法体内,catch方法体内。现在可以不用显式关闭。前提是这个资源实现了AutoClosable()接口中的close()方法,但是资源的引用必须在try{}方法体内,退出方法体之后,就会关闭对应的资源。
4)Collection的增强(最后考证,这东西是网上的谣传,没有这个特性,最直接的方法是自己去写一次,发现编译不通过)
以初始化数据的形式初始化容器,但是不同点是,这些初始化的容器的内容是不可变了。主要是[],{}的形式。
5)数字中可以使用下划线_主要是为了增强可读性
6)catch可以捕获多个异常,通过 | 进行分割
1.8特性:
1)Lambda表达式(也叫闭包):()->{}
可以认为是一种语法糖,底层实现没有变。但是是一种函数式编程思想的实现形式。
2) 函数式接口FunctionInterface
只有一个方法的接口
3)接口的静态方法和默认方法
4)方法引用
四种:1 构造方法(无参)2 类的静态方法(一个参数)3 类的非静态方法(无参) 4 对象的方法(一个参数)
5)重复打注解
需要重复打的注解必须@Repeatable注解
6)optional容器 感觉理解不难,上手难度不低。要多写几次才能理解。
核心思想是结合函数式编程然后让代码更加简洁优雅。如果不是函数式编程的思想,运用到optional容器,说不定代码更加多了,也就是没有正确的使用,一定是一连串的函数式调用才会简洁优雅。
7)steam,配合Lambda,贯彻函数式编程的思想。
主要是简化了集合框架,分三层,第一层获取steam,第二层(filter,distinct,skip,limit,map等操作后都产生一个新steam接着操作),第三层(sum,collection,findFirst)
还支持并行,parallel,reduce(其实就是map,reduce的思想)
8)JavaScript的引擎Nashorn
9)permGem被metaspace代替
很多特性没有整理进来。。但是对于目前我来说,掌握这些帮助最大。