Java Lambda表达式和Junit

1. Lambda表达式

1. 1 Lambda表达式: JDK1.8 函数式编程思想

    Lambda 表达式是一种匿名函数(对 Java 而言这并不完全正确,但现在姑且这么认为),简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。

    你可以将其想做一种速记,在你需要使用某个方法的地方写上它。当某个方法只使用一次,而且定义很简短,使用这种速记替代之尤其有效,这样,你就不必在类中费力写声明与方法了。

1.2 使用Lambda前提:

  • 1.实现一个接口
  • 2.接口中只有一个抽象方法
  • 3.接口对象是作为方法参数使用的

1.3 Lambda表达式的使用方式

(参数列表) -> {一些代码}
   
(参数列表): 		表示要重写的抽象方法的参数列表
 	-> : 		固定语法, 指向/传递的意思
{一些代码}: 		要重写的方法体
  

1.4 Lambda 取代匿名内部类

 匿名内部类: 本质还是类, 编译后也会生成字节码文件, 运行时也要加载
 
 Lambda: 本质是一个函数, 编译后不会有字节码文件, 直接从内存中获取,效率更高

1.5 Lambda省略的要点

可推导即可省略:

 1.() 中的参数类型, 可以省略, 如果有多个参数, 每个参数类型都要一起省略
 
 2.{} 中如果只有一行代码, 不论这个方法有没有返回值, 那么[{} return ;] 可以省略
     [{} return ; ]必须一起省略
     
 3.() 中如果只有一个参数, () 可以省略, 和类型一起省略
   () 中如果没有参数, 必须写 ()

1.6 Lambda表达式的演示代码:

public class DemoThread {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("哈哈哈哈哈哈");
            }
        }).start();

        new Thread(() -> System.out.println("哈哈哈哈哈哈")).start();
    }
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class DemoSort {
    public static void main(String[] args) {
        List<String> list = List.of("a", "ab!", "aa");
        list = new ArrayList<>(list);

        Collections.sort(list, (String o1, String o2) -> {
            return o1.length() - o2.length();
        });

        Collections.sort(list, (o1, o2) -> o1.length() - o2.length());
        System.out.println(list);
    }
}
public class DemoMyInterface2 {
    public static void main(String[] args) {
        method1(new MyInterface2() {
            @Override
            public String echo(String str) {
                return str;
            }
        }, "hello");

        method1(str -> str, "hello");
    }

    //必须要有一个以接口对象为参数的方法
    public static String method1(MyInterface2 in, String str) {
        return in.echo(str);
    }
}

2. JUnit(单元测试)

JUnit使用步骤:

     1.在工程中创建一个文件夹lib
     2.将2个jar包复制到lib中
     3.选择jar包 右键 -> Add as Library... 默认添加即可
     4.写一个测试类, 在其中写一个方法[不需要返回值,不需要参数]
     5.在方法上添加注解 @Test
     6.运行这个方法即可

JUnit常用注解:

     @Test: 测试的方法, 可以直接运行
     @Before: 在测试方法之前调用的
     @After: 在测试方法之后调用的
     
     @FunctionalInterface:注解
     @Override:检测方法是不是重写
     @SuppressWarnings:压制警告
     @Deprecated:标记一个类或者方法或者变量, 过时的
     @FunctionalInterface:检测一个接口是不是函数式接口

演示代码

import org.junit.*;

public class Demo0001 {

    @Before
    public void m1() {
        System.out.println("?");
    }

    @Test
    public void m2() {
        System.out.println("哈哈哈!");
    }

    @After
    public void m3() {
        System.out.println("哈哈哈!!!!!");
    }
}

在这里插入图片描述

3. 可变长参数

取代了数组 int[] arr -> int… arr。JDK1.5后, 修改为可变长参数

使用方法:

public class Demo01 {
    public static void main(String[] args) {
        sum(1, 2, 3, 4, 5, 1, 2, 1, 3, 32);
    }
    
    public static void sum(int... a) {
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        System.out.println(sum);
    }
}

注意:

  • 1.方法中, 除了可变长参数, 还有别的参数, 可变长参数必须放在参数列表最后
  • 2.而且一个方法中, 只能有一个可变长参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值