JDK1.8的新特性(随时更新!!!)

先说说自己的积累吧!!!随时更新!!!

一、Lambda表达式
  lambda表达式是JDK8中最大和最令人期待的语言改变。它允许我们将函数当成参数传递给某个方法或者把代码本身当作数据处理。lambda可以更简单的创建匿名内部类,使用lambda可以函数式编程。常用格式为:(参数列表)->{方法体}。
语法:
(parameters) -> expression

(parameters) ->{ statements; }
lambda表达式的重要特征:
(1)可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
(2)可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
(3)可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
(4)可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

注意:
1.匿名内部类
若想创建一个类(派生类)的对象,并且只创建一个,此时该类不必命名,称为匿名内部类。
2.::
此种写法是Java8 Lambda表达式
双冒号运算就是Java中的方法引用 method references
[方法引用]的格式是:类名::方法名
举例:
(1)person -> person.getName();
可以替换成:
Person::getName
(2)() -> new HashMap<>();
可以替换成:
HashMap::new

使用 Lambda 表达式需要注意以下几点:
(1)Lambda 表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的Lambda表达式来定义MathOperation接口的方法。然后我们定义了sayMessage的执行。
(2)Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。
(3)lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。

二、JDK8之前类变量(即静态变量,被static修饰的变量)在方法区中,jdk8中类变量会随着Class对象一起存放在Java堆中

三、JDK8加入了新的特性关键字default,加在方法前面能在接口的方法中写方法体(原本接口中只能写抽象方法没有方法体)。

四、hashmap底层实现在JDK1.7和JDK1.8是有区别的。JDK1.7的时候用的是数组+单链表的数据结构。JDK1.8的时候是数组+链表+红黑树的数据结构,当链表长度超过8(阈值)并且数据总量达到64,就会自动扩容把链表转化为红黑树。时间复杂度从O(n)转化为O(logN),大大的提高了效率。

五、Optional类(java.util.Optional)
  Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。
  Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
  Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
  Optional 类的引入很好的解决空指针异常。
注意:
空指针异常(NullPointerException)
指java中的异常类。
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。
这种情况包括:
(1)调用 null 对象的实例方法。
(2)访问或修改 null 对象的字段。
(3)将 null 作为一个数组,获得其长度。
(4)将 null 作为一个数组,访问或修改其时间片。
(5)将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值