网站建设有哪些模块,上海专业网站制作设计,包装纸箱公司怎么做网站,嵌入式培训报告Lambda表达式 Lambda表达式函数式编程思想概述Lambda表达式的标准格式Lambda表达式练习练习1练习2练习3 Lambda表达式的省略模式Lambda表达式的注意事项Lambda表达式与接口的区别 Lambda表达式
函数式编程思想概述
面向对象思想强调“必须通过对象的形式做事” 在函数式思想中… Lambda表达式 Lambda表达式函数式编程思想概述Lambda表达式的标准格式Lambda表达式练习练习1练习2练习3 Lambda表达式的省略模式Lambda表达式的注意事项Lambda表达式与接口的区别 Lambda表达式
函数式编程思想概述
面向对象思想强调“必须通过对象的形式做事” 在函数式思想中尽量忽略面向对象的复杂语法“强调做什么而不是什么形式做”
Lambda表达式的标准格式
里面为空可以看成是方法的形参为空- 用箭头指向后面要做的事{} 包含一段代码称为代码块可以看成是方法体中的内容 三要素形式参数、箭头、代码块 形式参数-{代码块}
Lambda表达式练习
Lambda表达式使用的前提条件
有一个接口接口中有且仅有一个抽象方法
练习1
定义一个接口Eatable,里面定义一个抽象方法 void eat定义一个测试类EatableDemo在测试类中提供两个方法 一个 方法是useEatable(Eatable e)一个方法是主方法在主方法中调用useEatable方法
创建接口
public interface Eatable {void eat();
}
创建实现类
public class EatableImpl implements Eatable{Overridepublic void eat(){System.out.println(CC吃我的屎);}
}创建测试类
public class EatableDemo {public static void main(String[] args){//实现类Eatable enew EatableImpl();useEatable(e);//匿名内部类useEatable(new Eatable() {Overridepublic void eat() {System.out.println(CC吃我的屁);}});//Lambda表达式useEatable(()-{System.out.println(CC吃我的大便);});}private static void useEatable(Eatable e){e.eat();}
}练习2
定义一个接口Flyable,里面定义一个抽象方法 void fly(String s)定义一个测试类FlyableDemo,在测试类中提供两个方法 一个是useFlyable(Flyable f)一个是主方法调用useFlyable方法 定义接口
public interface Flyable {void fly(String s);
}测试类
public class FlyableDemo {public static void main(String[] args){//匿名内部类useFlyable(new Flyable() {Overridepublic void fly(String s) {System.out.println(s);System.out.println(把CC屁股打烂);}});//LambdauseFlyable((String s)-{System.out.println(s);System.out.println(把CC活打死);});}private static void useFlyable(Flyable f){f.fly(飞飞飞);}
}
练习3
定义一个Addable接口里面定义一个抽象方法int add(int x,int y)定义一个AddableDemo测试类包含 useAddable(Addable a)主方法调用useAddable
创建接口
public interface Addable {int add(int x,int y);
}
测试类
public class AddableDemo {public static void main(String[] args) {useAddable((int x,int y)-{return xy;});}private static void useAddable(Addable a){int resa.add(10,20);System.out.println(res);}
}Lambda表达式的省略模式
参数的类型可以省略有多个不能只省略一个如果参数有且仅有一个小括号可以省略如果代码块只有一行可以省略大括号和分号有return也需要省略
public class LambdaDemo {public static void main(String[] args) {
// useAddable((int x,int y)-{
// return xy;
// });//参数的类型可以省略不能只省略一个useAddable((x, y)-{return xy;});//如果参数有且仅有一个小括号可以省略useFlyable(s-{System.out.println(s);System.out.println(把CC活打死);});//如果代码块只有一行可以省略大括号和分号有return也需要省略useFlyable(s- System.out.println(s));}public static void useFlyable(Flyable f){f.fly(飞飞飞);}private static void useAddable(Addable a){int resa.add(10,20);System.out.println(res);}
}Lambda表达式的注意事项
必须要有接口并且接口中有且只有一个抽象接口必须有上下文环境才能推导出Lambda接口 根据局部变量的赋值得知lambda对应的接口Runnable r()-System.out.println(“Lambda表达式”);根据调用方法的参数得知lambda对应的接口new Thread(()-System.out.println(“Lambda表达式”)).start();
Lambda表达式与接口的区别
所需类型不同
匿名内部类可以是接口也可以是抽象类还可以是具体类Lambda表达式只能是接口 使用限制不同如果接口中有且只有一个抽象方法可以使用Lambda表达式也可以使用匿名内部类如果接口中多于一个抽象方法只能用匿名内部类不能用Lambda表达式 实现原理不同匿名内部类编译后产生一个单独的.class字节码文件Lambda编译之后没有单独的.class字节码文件。对用的字节码会在运行的时候动态生成