Lambda表达式
Lambda是一种函数式编程思想
面向对象: 创建对象调用方法,解决问题。
函数式编程思想:不关注过程,只关注结果。
面向对象式编写一个代码,如下
public static void main(String[] args){ //面向对象式,创建一个线程,完成一个任务 // 创建一个任务r ,线程 t。 MyRunnable r = new MyRunnable(); Thread t = new Thread(r); t.start(); } static class MyRunnable implements Runnable{ @Override public void run(){ System.out.println("输出一段文字"); } }
或者 匿名内部类
// 匿名内部类 public static void main(String[] args){ // 只创建线程,任务 也是临时写下的,只要能完成目的就行。 Thread t = new Thread(new Runnable(){ @Override public void run(){ System.out.println("输出一段文字"); } }); t.start; }
函数式编程思想 不关心过程,只关注结果
public static void main(String[] args){ Thread t = new Thread(() -> {System.out.println("输出一段文字");System.out.println("如果想执行多行代码,需要加';'号 ");}); t.start(); }
举个从面向对象转向Lambda表达式的例子
实现一个方法,计算两个数的和。先正常进行创建一个完整的
// public static void main(String[] args){ // print(new MyMath(){ @Override public int sum(int x,int y){ return 0; } },100,200); } // 输出结果 --- > 300 // 传入一个算术对象,给两个 int 值x,y public static void print(MyMath m, int x, int y){ int num = m.sum(x,y); System.out.println("两数的和为:"+num); } // 自定义一个接口 static interface MyMath{ int sum(int x,int y); }
换成Lambda 表达式
解析一下:
- print();
- print((int x,int y) -> {}, 100 , 200); // int x, int y 是 Mymath 的sum 方法中的传入参数; 100,200 是 print方法中的 后两个参数
- print(int x,int y) ->{return x+y;},100,200); // return x+y; 是sum方法中执行的内容
// public static void main(String[] args){ print((int x,int y) -> { return x+y; },100,200); } // 输出 结果 -->300 // 传入一个算术对象,给两个 int 值x,y public static void print(MyMath m, int x, int y){ int num = m.sum(x,y); System.out.println("两数的和为:"+num); } // 自定义一个接口 static interface MyMath{ int sum(int x,int y); }