学习笔记之Lambda(面向对象思想与递归)

函数式编程思想:

只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程。

Lambda表达式

一些参数 一个箭头 一段代码
(参数类型 参数名称)->{代码语句}
(参数列表)->{一些重写方法的代码};
使用lambda表达式,实现多线程

new Thread(()->{
syso;}).start();

()=run的()有参数的话就在里面写,没有就空着,多个参数用,分开
->把括号参数传到中括号语句来
{}重写接口的方法体
//省略格式
new Thread(()->syso).start();

Lambda省略格式:

可推导可省略
可省略内容:
1.(参数列表):括号中参数列表的数据类型,可以省略不写
2.(参数列表):括号中的参数如果只有一个,那么类型和()都可以省略
3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号 )但必须一起省略

Arrays.sort(arr,(Person o1, Person o2)->{ return o1.getAge()-o2.getAge();});
//省略版
Arrays.sort(arr,(o1, o2) -> o1.getAge()-o2.getAge());
cal(100,200,(int a,int b)->{ return a+b; });
//省略版
cal(200,300,(a,b)->a+b);

Lambda使用前提

1.Lambda必须具有接口,且要求接口中有且仅有一个抽象方法
无论是内置的Runnable Comparator接口还是自定义接口,只要有当接口中的抽象方法存在且唯一时,才可以使用
2.必须具有上下文推断
也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。
备注:有且仅有一个抽象方法的接口,称为“函数式接口”。

额外知识

1.面向对象的思想:

做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。

使用匿名内部类,实现多线程程序
Runnabble r=new Runnable(){
@Overriide
run
};
new Thread®.start();
更加简化
new Thread(new Runnable(){
@Override
run
}).start();

为了调用不得不创建类。

匿名内部类
好处可以帮我们省去实现类的定义,弊端它的语法太复杂

2. 递归:

方法自己调用自己
递归的分类:直接递归和间接递归
直接递归为方法自身调用自己
间接递归可以A调用B,B调用C,C方法调用A方法。

注意: 递归一定要有条件限定,保证地递归能够停止下来,否则发生栈内存溢出 递归虽有限定条件,但次数不能太多,否则也会发生溢出
构造方法,禁止递归

使用前提:
当调用方法的时候,方法主体不变,每次调用方法的参数不同,可以使用递归

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值