JavaDay10-泛型、lambda表达式、函数式接口、装箱拆箱

泛型:

好处:1、参数化类型,定义集合时统一元素的类型;2、把运行时期的问题提前到了编译时期
泛型类class A、泛型接口interface A、泛型方法public static void A(){}
细节:1、不能写基本数据类型 2、传递数据时可以传递泛型的子类 3、如果不写,默认是Object类型

应用场景:

1、如果定义类、方法、接口的时候类型不确定,可以使用泛型
2、如果类型不确定,但是能确定在某个继承体系中,可以使用泛型的通配符(? extends 父类、? super 子类)

lambda表达式:

(参数类型 参数名)->{方法体};
可以实现函数式接口

函数式接口:

注解@FunctionInterface 保证函数式接口只有一个抽象方法
接口中只能有一个抽象方法

装箱拆箱

因:Java除了基本数据类型之外,其他都是对象

果:通过包装类实现基本数据类型转换成对象

装箱:基本数据类型-->包装类
拆箱:包装类-->基本数据类型

操作:

  • 装箱

    • 直接new包装类的对象,存储空间在内存
    • valueOf(),-128~127之间的数字会存储在缓存中,超出的话自动创建对象存在内存
    • 自动装箱 Integer i=1; 源码调用了valueOf()
  • 拆箱

    • 调用对象的***Value()
    • 自动拆箱 int iValue=i;源码调用了***Value()

注意

1、包装类的应用:进行进制转换
2、包装类进行比较的时候不用“==”,用“equals()”

public class ZhuangXiangChaiXiang {
    public static void main(String[] args) {
        //装箱
        Integer i=10;//自动装箱 会把-128~127之间的数字存放在缓存中
        System.out.println(i);
        String str="1000";
        Integer integer=Integer.valueOf(str);//手动装箱 超出了127 会创建Integer对象
        System.out.println(integer);

        //拆箱
        int iValue=i.intValue();
        System.out.println(iValue);
    }
}
posted @ 2023-04-10 15:47  小园初来乍到  阅读(29)  评论(0)    收藏  举报