一、Lamda表达式

文章目录

java8新特性-Lambda表达式的详解(从0开始)

一.Lamda表达式

  • Lamda表达式概述:
        Lambda表达式是JDK1.8之后的一种语法,是一个匿名函数,是对匿名函数的简写形式,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升;
  • 使用lamda表达式的条件

    • 使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法。也就是函数式接口
  • Lambda表达式简化代码的过程

第一阶段

		public class TestLamda1 {
		    public static void main(String[] args) {
		
		        Ilove love = new Love();
		        love.love(1);
		    }
		}
		
		//定义一个函数式接口,即只有一个抽象方法的接口
		interface Ilove{
		    void love(int a);
		}
		
		class Love implements Ilove{
		
		    @Override
		    public void love(int a) {
		        System.out.println("i love you ->" + a);
		    }
		}

运行结果:
在这里插入图片描述

第二阶段:将外部类更改为静态内部类

		public class TestLamda1 {
		//静态内部类(定义在类中的类)
		    static  class Love implements Ilove{

		        @Override
		        public void love(int a) {
		            System.out.println("i love you ->" + a);
		        }
		    }
		
		    public static void main(String[] args) {
		
		        Ilove love = new Love();
		        love.love(1);
		    }
		}
		
		//定义一个函数式接口,即只有一个抽象方法的接口
		interface Ilove{
		    void love(int a);
		}

运行结果:
在这里插入图片描述

第三阶段:将静态内部类改为局部内部类

	public class TestLamda1 {
	
	    public static void main(String[] args) {
	        //局部内部类(定义在方法中的类)
	        class Love implements Ilove{
	
	            @Override
	            public void love(int a) {
	                System.out.println("i love you ->" + a);
	            }
	        }
	
	        Ilove love = new Love();
	        love.love(1);
	    }
	}
	
	//定义一个函数式接口,即只有一个抽象方法的接口
	interface Ilove{
	    void love(int a);
	}

运行结果:
在这里插入图片描述
第四阶段:将局部内部类改为匿名内部类

	public class TestLamda1 {
	
	    public static void main(String[] args) {
	
	        //匿名内部类
	        Ilove love = new Ilove() {
	            @Override
	            public void love(int a) {
	                System.out.println("i love you ->" + a);
	            }
	        };
	        love.love(1);
	    }
	}
	
	//定义一个函数式接口,即只有一个抽象方法的接口
	interface Ilove{
	    void love(int a);
	}

运行结果:
在这里插入图片描述

第五阶段:改为lamda表达式形式

			public class TestLamda1 {
			
			    public static void main(String[] args) {
			
			 // 1.省略匿名内部类名称
			 // 2.省略方法修饰符
			 // 3.因为编译器可以自己判断返回值类型是什么,所有也可以省略。
			 // 4.方法名称以及赋值给了love,所有也可以省略。
			 // 5.方法括号中的参数类型也可以省略
		     // 6.然后在方法括号后面加上->
	       /* Ilove love = (a)-> {
	                System.out.println("i love you ->" + a);
	        };*/
	        //如果方法体中只有一行代码就可以连{ }也省略掉,如果有多行代码,就不可省略。
	        Ilove love = (a)-> System.out.println("i love you ->" + a);
	        love.love(1);
	    }
	}
			
			//定义一个函数式接口,即只有一个抽象方法的接口
			interface Ilove{
			    void love(int a);
			}

运行结果:
在这里插入图片描述
        这样,我们就成功的把“一块代码”赋给了一个变量。而“这块代码”,或者说“这个被赋给一个变量的函数”,就是一个Lambda表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值