Javaday19——Lambda表达式、可变长参数、JUnit单元测试这⾥写⽬录标题
Lambda表达式
JDK1.8 函数式编程思想
⾯向对象思想: 什么对象, 做什么, 结果是什么
函数式编程思想: 强调做什么,⽽不是以什么形式做。
语法
(参数列表) -> {⼀些代码}
(参数列表): 表⽰要重写的抽象⽅法的参数列表
-> : 固定语法, 指向/传递的意思
{⼀些代码}: 要重写的⽅法体
使⽤前提
1.实现⼀个接⼝
2.接⼝中只有⼀个抽象⽅法
3.接⼝对象是作为⽅法参数使⽤的
4.实现函数式接⼝@FunctionalInterface
与匿名内部类⽐较
Lambda ⽤来取代匿名内部类的
匿名内部类: 本质还是类, 编译后也会⽣成字节码⽂件, 运⾏时也要加载
Lambda: 本质是⼀个函数, 编译后不会有字节码⽂件, 直接从内存中获取效率更⾼
public interface MyInterface {
@Deprecated
int sum(int a,int b);
}
public class DemoMyInterface {
public static void main(String[] args){
int s =method1(new MyInterface(){
@Override
public int sum(int a,int b){
return a + b;
}
});
调⽤method1⽅法,需要传递MyInterface对象,
可以使⽤匿名内部类,就可以使⽤lambda表达式优化
int s =method1((int a,int b)->{
return a + b;
},1,3);
System.out.println(s);
// 继续优化
int s =method1(
(a, b)-> a + b
,1,3);
System.out.println(s);
}
// 需要将接⼝对象作为⽅法参数, 才可以使⽤Lambda表达式
public static int method1(MyInterface in,int a,int b){
// 在method1中使⽤接⼝对象in的sum⽅法
return in.sum(a, b);
}
可推导即可省略
1. () 中的参数类型, 可以省略, 如果有多个参数, 每个参数类型都要⼀起省略
2. {} 中如果只有⼀⾏代码, 不论这个⽅法有没有返回值, 那么[{} return ;] 可以省略
{} return ; 必须⼀起省略
3. () 中如果只有⼀个参数, () 可以省略, 和类型⼀起省略
() 中如果没有参数, 必须写 ()
函数式接⼝
接⼝中只有⼀个抽象⽅法, 默认⽅法\静态⽅法\私有⽅法 随意
@FunctionalInterface -> 注解
注解: JDK 1.5 属于程序的⼀部分, 可以取代⼀部分配置信息
@Override -> 检测⽅法是不是重写
@SuppressWarnings -> 压制警告
@Deprecated -> 标记⼀个类或者⽅法或者变量, 过时的
@FunctionalInterface -> 检测⼀个接⼝是不是函数式接⼝
可变长参数
参数类型… 参数名 -> 取代数组
int[] arr -> int… arr
JDK1.5后, 修改为可变长参数lambda编程
1.⽅法中, 除了可变长参数, 还有别的参数, 可变长参数必须放在参数列表最后
2.⽽且⼀个⽅法中, 只能有⼀个可变长参数
传⼊n个整数值,将传⼊的整数相加求和,并返回
public static void main(String[] args){
sum(2,4);
sum(1,2,3,4,5);
sum(1);
sum();
sum(1,2,3);
sum(1,2,3,4);
}
public static int arr){
int sum =0;
for(int i =0; i < arr.length; i++){
sum += arr[i];
}
return sum;
}
public static void method1(int a, ss){
}
}
JUnit单元测试
单元测试 -> 以⽅法为单位, 可以取代主⽅法
System.out.println(); -> 打桩测试
Debug -> 断点测试
JUnit -> 单元测试
原理
别⼈写好的代码, 我们想要使⽤
1.将别⼈写好的代码⼯程, 打包 jar ⽂件
是将编译后的字节码⽂件打包的
2.在⾃⼰的⼯程中 关联这个jar⽂件 -> 添加依赖
3.代码中直接使⽤ import
使⽤步骤
JUnit使⽤步骤:
1.在⼯程中创建⼀个⽂件夹lib
2.将2个jar包复制到lib中
3.选择jar包 右键 -> Add as Library… 默认添加即可
4.写⼀个测试类, 在其中写⼀个⽅法[不需要返回值,不需要参数]
5.在⽅法上添加注解 @Test
6.运⾏这个⽅法即可
常⽤注解
@Test: 测试的⽅法, 可以直接运⾏
@Before: 在测试⽅法之前调⽤的
@After: 在测试⽅法之后调⽤的
public class Demo01 {
@Before// 在所有@Test之前执⾏的public void before(){
System.out.println("hello Junit!");
}
@After// 在所有@Test之后执⾏的public void after(){
System.out.println("bye Junit!");
}
@Test// 取代主⽅法的
public void method01(){
System.out.println("hello method1"); }
@Test
public void method2(){
System.out.println("hello method2"); }
hello Junit!
hello method1
bye Junit!
hello Junit!
hello method2
bye Junit!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。