package com.inetTes01; /* 需求:启动一个线程,在控制台输出一句话:多线程程序启动了 */ import com.liushuaishuai.MyRunnable; public class lamadaDemo { public static void main(String[] args) { //实现类的方式,需要提前写一个类myRunnbale实现了Runnable接口并且重写run方法 // myRunnable my = new myRunnable(); // Thread t = new Thread(my); // t.start(); //匿名内部类的方式来改进 // new Thread(new Runnable() { // @Override // public void run() { // System.out.println("多线程程序启动了"); // } // }).start(); //lamada表达式的方式改进 new Thread(() -> { System.out.println("多线程程序启动了"); }).start(); } }
Lambda表达式的格式
●格式: (形式参数)-> {代码块}
●形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即呵
●->:由英文中画线和大于符号组成,固定写法。代表指向动作
●代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
Lambda表达式的练习
Lambda表达式的使用前提
●有一个接口,接口中有且仅有一个抽象方法
练习1:
●定义一个接口(Eatable), 面定义一个抽象方法: void eat0;
●定义一个测试类(EatableDemo), 在测试类中提供两个方法
一个方法是: useEatable(Eatable e)
一个方法是主方法,在主方法中调用useEatable方法、
接口类 package com.inetTes01; public interface Addable { int add (int x,int y); } 测试类如下 package com.inetTes01; /* Lambda表达式的格式: (形式参数) -> {代码块} 练习3: 1:定义一个接口(Addable),里面定义一个抽象方法: int add(int x,int y); 2:定义一个测试类(AddableDemo),在测试类中提供两个方法 一个方法是: useAddable(Addable a) 一个方法是主方法,在主方法中调用useAddable方法 */ public class AddableDemo { public static void main(String[] args) { useAddable((int x, int y) -> { //return x + y; //30 return x - y; //10 代码块里的内容即相当于接口实现类对方法的重写 }); } private static void useAddable(Addable a) { System.out.println(a.add(10, 20));//add相当于调用实现类中对add的重写 } }