编程语言
首页 > 编程语言> > java1.8新特性

java1.8新特性

作者:互联网

java1.8新特性
函数式编程
提供的接口的抽象方法的实现类
接口:函数式接口
java.util.function.xxxxx
Predicate: boolean test() 断言 判断逻辑
Consumer : accept(T t) 消费 通过提供一个对象 --》代码处理
Function: R apply() 关系函数 k----> v
supplier: T get() 通过代码生产出一个对象
有且只有一个抽象方法

​ java7.0以来
​ try-with-resource的资源自动释放等,都给我们带来了很方便的操作和极大的便利。
​ 将流的声明和创建放在try(InputSream in = new FileInputStream(file));
​ 不需要再手动写关流的代码,会自动关流,释放资源。
从以下几个方面来了解java1.8新特性
​ 1. 接口方法
​ java1.8之前,接口中的方法全都是抽象方法,不能有其他方法,
​ java1.8以后,接口中可定义默认(default)和静态方法(static),这两种方法都可以有具体实现,
​ 实现该接口的类也可继承这两种方法去直接使用,也可对其进行重写
​ 默认方法存在的两大优势:
​ 1. 可以让接口更优雅的升级,减少使用人员操作的负担
​ 不必随着接口方法增加,从而修改实现代码,因为默认方法在子类中可以不用实现
​ 2. 可以让实现类中省略很多不必要方法的空实现
​ 接口继承和默认方法冲突
​ 1、
​ 如果一个类实现了多个接口,这些接口之间有继承关系,同时还子接口还实现了父接口的默认方法
​ 在该类中调用方法时,类中声明的方法优先级最高,其次是子接口中重写的方法,最后才是父接口的方法
​ 2、
​ 如果一个类实现了多个接口,这些接口中有同名的默认方法,但这些接口并没有继承关系,
​ 在类中调用方法时,必须要用接口名.super.方法名来区分,不然会编译报错
​ 静态方法
​ 在接口的实现类中调用接口的静态方法时必须使用 接口名.静态方法名。

​ 2. lambda表达式
​ 使用lambda表达式可以让代码变得更加简洁,同时确保在java代码中支持函数式编程
​ 表达式格式为:(参数)->{逻辑代码};
​ 1、行为参数化
​ 3. 方法引用
​ 分为 类名::静态方法
​ 对象名::非静态方法
​ 抽方法中提供了对象,此时可通过 类名::非静态方法((对象)非静态方法)

​ public void main(String[] args){
​ //此时是利用String类中的静态方法ValueOf来实现相应逻辑,也是一种lambda表达式
​ A a = String::ValueOf;//实现
​ //此时调用的是String类中的静态方法ValueOf中的逻辑来实现将int类型的100转为String类型的100
​ a.test(100);//调用
​ }
​ interace A{

​ String test(int i);
​ }
​ 4. Stream APIjava1.8新特性
​ 函数式编程
​ 提供的接口的抽象方法的实现类
​ 接口:函数式接口
​ java.util.function.xxxxx
​ Predicate: boolean test() 断言 判断逻辑
​ Consumer : accept(T t) 消费 通过提供一个对象 --》代码处理
​ Function: R apply() 关系函数 k----> v
​ supplier: T get() 通过代码生产出一个对象
​ 有且只有一个抽象方法

​ java7.0以来
​ try-with-resource的资源自动释放等,都给我们带来了很方便的操作和极大的便利。
​ 将流的声明和创建放在try(InputSream in = new FileInputStream(file));
​ 不需要再手动写关流的代码,会自动关流,释放资源。
从以下几个方面来了解java1.8新特性
​ 1. 接口方法
​ java1.8之前,接口中的方法全都是抽象方法,不能有其他方法,
​ java1.8以后,接口中可定义默认(default)和静态方法(static),这两种方法都可以有具体实现,
​ 实现该接口的类也可继承这两种方法去直接使用,也可对其进行重写
​ 默认方法存在的两大优势:
​ 1. 可以让接口更优雅的升级,减少使用人员操作的负担
​ 不必随着接口方法增加,从而修改实现代码,因为默认方法在子类中可以不用实现
​ 2. 可以让实现类中省略很多不必要方法的空实现
​ 接口继承和默认方法冲突
​ 1、
​ 如果一个类实现了多个接口,这些接口之间有继承关系,同时还子接口还实现了父接口的默认方法
​ 在该类中调用方法时,类中声明的方法优先级最高,其次是子接口中重写的方法,最后才是父接口的方法
​ 2、
​ 如果一个类实现了多个接口,这些接口中有同名的默认方法,但这些接口并没有继承关系,
​ 在类中调用方法时,必须要用接口名.super.方法名来区分,不然会编译报错
​ 静态方法
​ 在接口的实现类中调用接口的静态方法时必须使用 接口名.静态方法名。

2. lambda表达式
	使用lambda表达式可以让代码变得更加简洁,同时确保在java代码中支持函数式编程
	表达式格式为:(参数)->{逻辑代码};
  1、行为参数化
3. 方法引用
	分为 类名::静态方法
		对象名::非静态方法
		抽方法中提供了对象,此时可通过 类名::非静态方法((对象)非静态方法)
	
	public void main(String[] args){
		//此时是利用String类中的静态方法ValueOf来实现相应逻辑,也是一种lambda表达式
		A a = String::ValueOf;//实现
		//此时调用的是String类中的静态方法ValueOf中的逻辑来实现将int类型的100转为String类型的100
		a.test(100);//调用
	}
	interace A{
		
		String test(int i);
	}
4. Stream API

标签:静态方法,String,java1.8,接口,实现,特性,方法,类中
来源: https://blog.csdn.net/weixin_59991949/article/details/120370533