java进阶第六天

进阶第六天安排

Lambda表达式

作用:Lambda表达式,允许算法逻辑(方法)作为一个可传递的对象,进行传递。诣在帮助java开发人员从冗余的代码开发中解脱出来。
Lambda表达式就是专门用来实现这些函数式接口的表达式,这点非常重要

函数式接口

函数式接口代表只包含一个抽象方法的接口,java8的API文档中很多函数式接口,例如 Runnable ActionListener等接口
我们可以使用注解@Functionallnterface,来强约束这种接口为函数式接口
举例子:

1 @FunctionalInterface
2 public interface Runnable {
3     public abstract void run();
4 }

使用Runanable创建线程

Runnable runnable=new Runnable()
{
    @Override
    publuc void run()
    {
        
    }
};
new Thread(runnable).start();
注意:这是起一个匿名内部类实现接口中的方法

但是Lambda表达式则可以直接作为一个函数表达式来替代这个内部类

Runnable runnable=()->
{
    
}
new Thread(runnable).start();

在这个例子中,我们可以发现Lambda表示有三部分构成:
1、参数列表:与接口中方法的参数列表要求一致
2、箭头:-> 由横线和大于号构成
3、方法体:和方法的方法体要求是一样的。

同时Lambda为了更加简洁的
1、参数列表中的参数类型可以直接都忽略掉不写。(注意是参数类型,不是参数。因为只有一个抽象方法,参数类型是可以直接推导出来的)
2、如果只有一个参数,圆括号也可以省略。
3、方法体如果只有一语句,可以省略掉大括号。
4、如果仅有一条语句,并且他是return语句的话,那么可以直接省略掉return关键字
这里不详细,之后熟悉了补充

枚举类

我们把有限而且固定的类称为枚举类
特点:
1 使用enum定义,非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类。
2 枚举类的构造器只能使用private访问修饰符,
3 枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。系统会走动添加 public static final

public enum SeasonEnum
{
    //在第一行列出4个枚举实例
    SPRING,SUMMER,FALL,WINTER;
}

枚举类的成员变量,方法和构造器

枚举类应该设计成不可变类,这样会更安全,因此建议枚举类的成员变量都使用private final修饰
详细代码见第六章

对象与垃圾回收

遵循以下三点
1 垃圾回收机制只回收内存中的对象
2 程序无法精确控制垃圾回收的运行
3 在垃圾回收制回收任何对象之前,总会先调用它的finalize()方法,该方法可能使对象重新复活。

强制垃圾回收方法:
1 调用system类的gc()静态方法System,gc()
2 调用Runtime对象的gc()实例方法:Runtime.getRutime().gc();

finallze方法

java提供默认机制来清理对象的资源,这个机制就是finalize()方法
1 永远不要主动调用某个对象的finalize()方法,该方法应交给垃圾回收机制调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值