jdk8 新特性

本文详细介绍了Java 8的两大重要特性:Lambda表达式和Stream API。从Lambda表达式的概念、语法、类型推断,到函数式接口的使用,再到Stream API的原理和操作步骤,包括创建、中间操作和终止操作,以及Collectors的使用,最后还提及了Optional类的应用。通过本文,读者将全面了解Java 8的新特性并能实际运用。

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

目录

 

java 8新特性简介

Lambda 表达式

为什么使用 Lambda 表达式

 Lambda 表达式:语法

类型推断

函数式(Functional)接口

什么是函数式(Functional)接口

如何理解函数式接口

函数式接口举例

作为参数传递 Lambda 表达式

Java 内置四大核心函数式接口

其他接口

方法引用与构造器引用

构造器引用

数组引用

强大的Stream API

为什么要使用Stream API

什么是 Stream

Stream 的操作三个步骤

创建 Stream方式一:通过集合

创建 Stream方式二:通过数组

创建 Stream方式三:通过Stream的of()

创建 Stream方式四:创建无限流

Stream 的中间操作

Stream 的终止操作

 强大的Stream API: Collectors

Optional类


java 8新特性简介

Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 
Java 8 是oracle公司于2014年3月发布,
可以看成是自Java 5 以来最具革命性的版本。
Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。

Lambda 表达式

为什么使用 Lambda 表达式

Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。
使用它可以写出更简洁、更灵活的代码。
作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

Lambda 表达式:在Java 8 语言中引入的一种新的语法元素和操作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符或箭头操作符。它将 Lambda 分为两个部分:

左侧:指定了 Lambda 表达式需要的参数列表
右侧:指定了 Lambda 体,是抽象方法的实现逻辑,也即 Lambda 表达式要执行的功能

 Lambda 表达式:语法

类型推断

函数式(Functional)接口

什么是函数式(Functional)接口

如何理解函数式接口

函数式接口举例

 

作为参数传递 Lambda 表达式

Java 内置四大核心函数式接口

其他接口

方法引用与构造器引用

方法引用(Method References)

构造器引用

数组引用

强大的Stream API

为什么要使用Stream API

什么是 Stream

Stream 的操作三个步骤

创建 Stream方式一:通过集合

创建 Stream方式二:通过数组

创建 Stream方式三:通过Stream的of()

创建 Stream方式四:创建无限流

// 方式四:创建无限流
@Test
public void test4() {
	// 迭代
	// public static<T> Stream<T> iterate(final T seed, final
	// UnaryOperator<T> f)
	Stream<Integer> stream = Stream.iterate(0, x -> x + 2);
	stream.limit(10).forEach(System.out::println);

	// 生成
	// public static<T> Stream<T> generate(Supplier<T> s)
	Stream<Double> stream1 = Stream.generate(Math::random);
	stream1.limit(10).forEach(System.out::println);
}

Stream 的中间操作

Stream 的终止操作

 强大的Stream API: Collectors

Optional类

@Test
public void test1() {
  Boy b = new Boy("张三");
  Optional<Girl> opt = Optional.ofNullable(b.getGrilFriend());
  // 如果女朋友存在就打印女朋友的信息
  opt.ifPresent(System.out::println);
}

@Test
public void test2() {
  Boy b = new Boy("张三");
  Optional<Girl> opt = Optional.ofNullable(b.getGrilFriend());
  // 如果有女朋友就返回他的女朋友,否则只能欣赏“嫦娥”了
  Girl girl = opt.orElse(new Girl("嫦娥"));
  System.out.println("他的女朋友是:" + girl.getName());
}
@Test
public void test3(){
  Optional<Employee> opt = Optional.of(new Employee("张三", 8888));
  //判断opt中员工对象是否满足条件,如果满足就保留,否则返回空
  Optional<Employee> emp = opt.filter(e -> e.getSalary()>10000);
  System.out.println(emp);
}
@Test
public void test4(){
  Optional<Employee> opt = Optional.of(new Employee("张三", 8888));
  //如果opt中员工对象不为空,就涨薪10%
  Optional<Employee> emp = opt.map(e -> {e.setSalary(e.getSalary()%1.1);return e;});
  System.out.println(emp);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值