java基础--java8新特性

本文详细介绍了Java 8的主要特性,包括Lambda表达式的使用,函数式接口的概念,以及如何进行方法引用。此外,还讲解了Stream API的原理和操作,以及新日期时间API的改进,如LocalDate、LocalTime等。这些新特性显著提升了Java的代码简洁性和功能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java8新特性

java8概述

java8(又称JDK1.8)是java语言开发的一个主要版本。
支持Lambda表达式。
函数式接口。
新的Stream API
新的日期API
其他特性

Lambda表达式

Lambda表达式:特殊的匿名内部类,语法更简洁。
Lambda表达式允许把函数作为一个方法的参数(函数作为方法参数传递),将代码像数据一样传递。
基本语法
<函数式接口><变量名>={参数1,参数2...}->{ //方法体 };
Lambda引入了新的操作符:->(箭头操作符),->将表达式分成两部分。左侧:(参数1,参数2…)表示参数列表。右侧:{}内部是方法体。
注意事项:

  1. 形参列表的数据类型会自动推断
  2. 如果形参列表为空,只需保留()
  3. 如果形参只有1个,()可以省略,只需要参数的名称即可。
  4. 如果执行语句只有一句,且无返回值,{}可以省略,若有返回值,则若想省去{},则必须同时省略return,且执行语句也保证只有一句。
  5. Lambda不会生成一个单独的内部类文件。

函数式接口

如果一个接口只有一个抽象方法,则该接口称之为函数式接口,函数式接口可以用Lambda表达式,Lambda表达式会被匹配到这个抽象方法上。
@FunctionalInterface注解检测接口是否符合函数式接口。
常见函数式接口

函数式接口参数类型返回类型说明
Consumer消费型接口Tvoidvoid accept(T t); 对类型为T的对象应用操作
Supplier 供给型接口TT get(); 返回类型为T的对象
Function<T,R> 函数型接口TRR apply(T t);对类型为T的对象应用操作,并返回类型为R类型的对象
Predicate 断言型接口Tbooleanboolean test(T t); 确定类型为T的对象是否满足条件,并返回boolean类型

方法引用

方法引用时Lambda表达式的一种简写形式。如果Lambda表达式方法体中只是调用一个特定的已经存在的方法,则可以使用方法引用。
常见形式:

  1. 对象::实例方法
  2. 类::静态方法
  3. 类::实例方法
  4. 类::new

Stream API

什么是Stream

流(Stream)中保存对集合或数组数据的操作。和集合类似,但集合中保存的是数据。

Stream特点

Stream自己不会存储元素
Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。
Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。

Stream使用步骤

创建:新建一个流
中间操作:在一个或多个步骤中,将初始化Stream转化到另一个Stream的中间操作
终止操作:使用一个终止操作来产生一个结果。该操作会强制它之前的延迟操作立即执行。在这之后,该Stream就不能使用 了。

创建Stream

  1. 通过Collection对象的stream()或parallelStream()方法
  2. 通过Arrays类的stream()方法
  3. 通过Stream接口的of()、iterate()、generate()方法
  4. 通过IntStream、LongStream、DoubleStream接口中的of、range、rangeClosed方法

中间操作、终止操作

中间操作
filter、limit、skip、distinct、sorted
map
parallel
终止操作
forEach、min、max、count
reduce、collect

新时间API

之前时间API存在问题:线程安全问题、设计混乱
本地化日期时间API:
LocalDate
LocalTime
LocalDateTime
Instant:时间戳
ZoneId:时区
Date、Instanf、LocalDateTime的转换
DateTimeFormatter:格式化类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值