首页 > 编程语言 >Java中Lambda表达式

Java中Lambda表达式

时间:2023-06-13 21:36:05浏览次数:45  
标签:Java void System println Lambda public 表达式 out

Demo1:

package com.itheima.d9_lambda;

public class LambdaDemo1 {
    public static void main(String[] args) {
        //目标:学会使用lambda的标准格式简化匿名内部类的代码形式
        Animal a = new Animal() {
            @Override
            public void run() {
                System.out.println("乌龟跑得很慢!");
            }
        };
        a.run();

//        Animal a1 = ()->{
//                System.out.println("乌龟跑得很慢!");
//        };
//        a.run();
    }
}
abstract class Animal{
    public abstract void run();
}

Demo2:

package com.itheima.d9_lambda;

public class LambdaDemo2 {
    public static void main(String[] args) {
        //目标:学会使用lambda的标准格式简化匿名内部类的代码形式
        //Lambda只能简化接口中只有一个抽象方法的匿名内部类形式
//        Swimming s1 = new Swimming() {
//            @Override
//            public void swim() {
//                System.out.println("老师游泳贼溜!!!!!");
//            }
//        };
//        go(s1);
        Swimming s1 = () -> {
            System.out.println("老师游泳贼溜!!!!!");
        };
        go(s1);
        System.out.println("----------------------");

//        go(new Swimming() {
//            @Override
//            public void swim() {
//                System.out.println("学生游泳贼溜!!!!");
//            }
//        });

        go(()->{
                System.out.println("学生游泳贼溜!!!!");
        });
    }


    public static void go(Swimming s ){
        System.out.println("开始!");
        s.swim();
        System.out.println("结束!");
    }
}
@FunctionalInterface //一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
interface Swimming{
    void swim();
}

Demo3:

package com.itheima.d9_lambda;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Comparator;
public class LambdaDemo3 {
    public static void main(String[] args) {
        Integer[] ages1 = {16 , 32 , 11 , 6 , 98};
        /**
         * 参数一:被排序的数组,必须是引用类型的元素
         * 参数二:匿名内部类对象,代表了一个比较器对象
         */
//        Arrays.sort(ages1, new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o2 - o1; //降序
//            }
//        });
//        System.out.println(Arrays.toString(ages1));

        Arrays.sort(ages1, (Integer o1, Integer o2)-> {
                return o1 - o2; //升序
        });
        System.out.println(Arrays.toString(ages1));

        System.out.println("-----------------------");
        JFrame win = new JFrame("登陆界面");

        JButton btn = new JButton("我是一个很大的按钮");
//        btn.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                System.out.println("我被点击了");
//            }
//        });
        btn.addActionListener((ActionEvent e)-> {
                System.out.println("我被点击了");
        });

        win.add(btn);
        win.setSize(400,300);
        win.setVisible(true);
    }

}

1、Lambda表达式的基本作用?
简化函数式接口的匿名内部类的写法

2、Lambda表达式有什么使用前提?
必须是接口的匿名内部类,接口中只能有一个抽象方法

(Demo1中出bug的原因就是因为lambda不能使用在抽象类上,使用后或提示‘Target type of a lambda conversion must be an interface’)

3、Lambda的好处?
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码作为一种更紧凑的代码风格,使java语言表达能力得到了提升

标签:Java,void,System,println,Lambda,public,表达式,out
From: https://www.cnblogs.com/liandaozhanshi/p/17478747.html

相关文章

  • Java反序列化Commons-Collection篇06-CC5链
    <1>环境分析jdk:jdk8u65CC:Commons-Collections3.2.1pom.xml添加<dependencies><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId>......
  • Java课程设计--象棋--齐鲁工业大学
    目录1.项目简介2.项目采用技术 3.功能需求分析4.项目亮点5.项目功能架构图和UML类图6.主要功能截图7.团队成员负责模块(表格形式)8.项目git地址9.团队成员git提交截图10.项目总结 正文1.项目简介主要研究基于JAVA技术的中国象棋游戏的分析与设计,对中国象棋游......
  • Java基本查找,二分查找,选择排序
    一、基本查找packagecom.itheima.d8_sort_binarysearch;/***基本查找*/importjava.util.Scanner;publicclassTest3{publicstaticvoidmain(String[]args){//1、定义一个数组(基本查找)int[]arr={12,95,1,3,76,4,2,93,56,49,67};......
  • Java面试笔记202306
    Java基础ArrayListArrayList底层数据是动态数组,初始长度为10,每次扩容为原来的1.5倍。扩容流程:首先会创建一个新的长度的数组,然后使用Arrays.copyOf()方法将旧的数组中的元素复制到新的数组中,最后会将新插入的数据插入到新的数组中。IO和NIO的区别io指的是io流。可以实现数......
  • Java反序列化之Commons-Collection篇05-CC2链
    <1>环境分析jdk:jdk8u65CC:Commons-Collections4.0pom.xml添加<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version></dependency&g......
  • javascript:eval()的用法
    eval()是JavaScript中的一个全局函数,它可以计算或执行参数。如果参数是表达式,则eval()计算表达式;如果参数是一个或多个JavaScript语句,则eval()执行这些语句。以下是一些常见的用法:-计算表达式的值:`varresult=eval("3+5");`-执行JavaScript代码字符串:`varcode......
  • Java9新特性
    在介绍java9之前,我们先来看看java成立到现在的所有版本。  1990年初,最初被命名为Oak;  1995年5月23日,Java语言诞生;  1996年1月,第一个JDK-JDK1.0诞生;  1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术;  1996年9月,约8.3万个网页应用了Jav......
  • Java9比Java8改进了什么
    1)引入了模块系统,采用模块化系统的应用程序只需要这些应用程序所需的那部分JDK模块,而非是整个JDK框架了,减少了内存的开销。2)引入了一个新的package:java.net.http,里面提供了对Http访问很好的支持,不仅支持Http1.1而且还支持HTTP2。3)引入了jshell这个交互性工具,让Java也可以像脚本......
  • JAVA8 十大新特性详解
    一、接口的默认方法Java8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法,示例如下:代码如下:interfaceFormula{   doublecalculate(inta);    defaultdoublesqrt(inta){       returnMath.sqrt(a); ......
  • JavaScript Array 对象参考手册 splice() 方法
    JavaScriptsplice()方法返回JavaScriptArray对象参考手册(目录)定义和用法splice()方法用于插入、删除或替换数组的元素。语法arrayObject.splice(index,howmany,element1,.....,elementX) 参数描述index必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组......