栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 8新特性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 8新特性

Java 8新特性
  • 一、Lambda表达式
  • 二、方法的默认实现和静态方法
  • 三、方法引用
  • 四、注解(Annotation)
  • 五、类型推测
  • 六、参数名字
  • 七、新增Optional类
  • 八、新增Stream类
  • 九、日期新特性
      • 1.8以前
      • 1.8
  • 十、调用Javascript
  • 十一、base64
  • 十二、并行数组

一、Lambda表达式

Lambda表达式是一个匿名函数(指的是没有函数名的函数),它基于数学中的λ演算得名,直接对应于其中的Lambda抽象。Lambda表达式可以表示闭包。

Lambda表达式允许把函数作为一个方法的参数。Lambda表达式的基本语法:

(parameters)-> expression
或者
(parameters)->{statements;}
Lambda表达式是通过函数式接口(只有一个方法的普通接口)来实现的。函数式接口可以被隐式地转换为Lambda表达式。

二、方法的默认实现和静态方法

使用关键字default可以给接口中的方法添加默认实现,此外,接口中还可以定义静态方法。接口也可以包含行为,而不仅仅包含方法的定义,但是不能在接口中定义私有方法。

三、方法引用

方法引用指的是可以直接引用Java类或对象的方法。它可以被看成是一种更加简洁易懂的Lambda表达式。

方法引用共有下面4种形式:

1)引用构造方法:ClassName::new

2)引用类静态方法:ClassName::methodName

3)引用特定类的任意对象方法:ClassName::methodName

4)引用某个对象的方法:instanceName::methodName

四、注解(Annotation)
  1. 引入了重复注解机制,相同的注解在同一个地方可以声明多次。

  2. 扩展了注解,注解被使用的范围更广。可用于类型,注解可以应用在任何地方:局部变量、泛型类、⽗类与接⼝的实现,就连⽅法的异常也能添加注解。

五、类型推测

编译器能根据显示声明的已知的信息 推断出你没有显示声明的类型。

Map map = new Map();

等价于

Map map = new Map<>();
六、参数名字

JDK1.8通过在编译的时候增加-parameters选项,以及增加反射API与Parameter.getName()方法实现了获取方法参数名的功能。

七、新增Optional类

引入Optional类来处理空指针的情况,从而增强了代码的可读性。

八、新增Stream类

引入函数式编程的风格,提供了parallel、map、reduce等方法,这些方法用于增加对原生类并发处理的能力。

九、日期新特性 1.8以前

1)Calendar:实现日期和时间字段之间转换,它的属性是可变的。因此,它不是线程安全的。

2)DateFormat:格式化和分析日期字符串。

3)Date:用来承载日期和时间信息,它的属性是可变的。因此,它不是线程安全的。

1.8

新的java.time主要包含了处理日期、时间、日期/时间、时区、时刻(instants)和时钟(clock)等操作。

// Clock类通过指定一个时区,可以获取到当前的时刻、日期与时间

Clock c = Clock.system(ZoneId.of(“Asia/Shanghai”); //上海时区

//Instant 使用

Instant ist = Instant.now();

ist.getEpochSecond(); //精确到秒

ist.toEpochMilli(); //精确到毫秒

十、调用Javascript

增加API使得通过Java程序来调用Javascript代码。

scriptEngineManager manager = new scriptEngineManager();
 
scriptEngine engine = manager.getEngineByName("Javascript");
 
engine.getClass().getName();
十一、base64

把base64编码添加到了标准类库中。

十二、并行数组

对数组并行处理的方法(parallelXxx)。

int arr[] = {1,5,8,18,3,14};
Arrays.parallelSort(arr);
Arrays.stream(arr).forEach(i->System.out.pront(i + " "));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/592327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号