java1.8 lambda表达式初识(一)

来源:互联网 发布:nginx 根目录 跳转 编辑:程序博客网 时间:2024/06/04 18:05

        lambda表达式是java这些年来最激动的一个变化了 ,很长时间再回过头来学习java基础知识了。

今天心血来潮,准备系统的学习下jdk1.8的lambda表达式和函数式接口。


1.什么是lambda表达式?为什么引入lambda表达式?

   lambda是一个可传递的代码块,为了让我们的代码可读性更好简洁优雅。废话不多说,具体看个栗子。

   最经典的就是排序了,这也是网上比较流行的解释lambda表达式的栗子了。

    

import java.util.Arrays;import java.util.Date;import javax.swing.JOptionPane;import javax.swing.Timer;public class Lambda {public static void main(String[] args){String[] planets = new String[]{"Merdred", "sunday", "Vnues", "earth", "mars", "Jupiter","Netesetserfs"};//排序前System.out.println(Arrays.toString(planets));//按字母排序后Arrays.sort(planets);System.out.println(Arrays.toString(planets));//按单词长度排序后,使用lambda表达式Arrays.sort(planets, (first, second) -> first.length()-second.length());System.out.println(Arrays.toString(planets));//定时器调用,使用lambada表达式Timer t = new Timer(1000, event-> System.out.println(new Date()));t.start();JOptionPane.showConfirmDialog(null, "quit?");System.exit(0);}}

注意到上面创建timer对象时甚至直接将代码块转换成了Timer对象的ActionListener接口,这就是lambda表达式的魅力所在了。