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

JDK1.8的新特性

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

JDK1.8的新特性

目录

一、Lambda表达式

1.1 概念

1.2 特点 

1.3 基本语法 

1.3.1 lambda表达式的重要特征   

二、方法引用

2.1 使用形式

三、 默认方法


一、Lambda表达式

1.1 概念

        Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。可以使代码变的更加简洁紧凑。

1.2 特点 

1)更加紧凑的代码:Lambda表达式可以通过省去冗余代码来减少我们的代码量,增加代码的可读性;

2)更好的支持多核处理:Java1.8中通过Lambda表达式可以很方便地进行操作大集合,充分发挥多核CPU的潜能,并行处理函数如filter、map和reduce;

3)改善我们的集合操作:Java1.8 引入 Stream API,可以将大数据处理常用的 map、reduce、filter 这样的基本函数式编程的概念与 Java 集合结合起来。方便我们进行大数据处理。

1.3 基本语法 

(参数列表)-> {代码块}

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

1.3.2 lambda表达式实例

public class Lambda {
	public static void main(String []args){
		Lambda l=new Lambda();
		String some="I am Lambda";
        String some1="我是匿名内部类";
		Print p=(String a)->{System.out.println(a);};    //lambda表达式
		l.printer(some, p);
        l.printer(some1, p1);
	}

	interface Print{  //定义一个接口
		void print(String a);   //抽象方法
    }
    public void printer(String some,Print pr){  //定义一个方法来实现Print接口
    	pr.print(some);   //调用Print接口里的方法
    }
    static Print p1=new Print(){   //匿名内部类
		public void print(String a) {
			System.out.println(a);
		}	
	};
}

输出结果为:

            

 在这个例子中可以看出,lambda表达式的代码比匿名内部类的代码简洁了好多,都是实现相同的接口。

二、方法引用

方法引用通过方法的名字来指向一个方法。
方法引用可以使语言的构造更紧凑简洁,减少冗余代码                                                           方法方法引用是一个更加紧凑,易读的Lambda表达式。
方法引用使用一对冒号 :: 。

2.1 使用形式
  • 构造器引用 类名::new
  • 静态方法引用  类名::静态方法名
  • 特定类的任意对象的方法引用类名::实例方法名
  • 特定对象的方法引用 对象实例名::实例方法名

 这里只使用静态方法的引用,其它的引用形式,感兴趣的话,可以自行百度学习。

public class MethodReference {
	public static void main(String args[]){
	      List names = new ArrayList();  //new一个List集合
	      names.add("Google");    //添加元素
	      names.add("Runoob");
	      names.add("Taobao");
	      names.add("Baidu");
	      names.add("Sina"); 
	      names.forEach(System.out::println);  
        //利用forEach方法遍历输出List集合中的元素
       //将System.out::println 方法作为静态方法来引用。
	   }
   
}

输出结果为:

三、 默认方法

Java 8 新增了接口的默认方法。

简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。

我们只需在方法名前面加个 default 关键字即可实现默认方法。

public interface Vehicle {
	default void print(){
		System.out.println("我是一辆车");
	}
	static void on(){
		System.out.println("启动");
	}
}

public interface FourWheeler {
	default void print(){
		System.out.println("我是一辆四轮车");
	}
}

public class Car implements Vehicle,FourWheeler{
	public void print() {
		Vehicle.super.print();
		FourWheeler.super.print();
		Vehicle.on();
	}
}

public class DefaultMethod{
	public static void main(String[] args){
		Vehicle vehicle=new Car();
		vehicle.print();
	}
}

输出结果为:

 通过上面的例子,接口可以声明(并且可以提供实现)静态方法;如果一个类只实现了一个拥有默认方法的接口时,不用重写默认方法;如果一个类实现了多个接口,且这些接口有相同的默认方法,那么必须要重写默认方法或者使用 super 来调用指定接口的默认方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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