Java SE 进阶day03

本文介绍了Java中的内部类,包括普通内部类、静态内部类和匿名内部类,以及Lambda表达式的概念、作用和使用场景,特别强调了Lambda表达式如何简化代码并指出其与匿名内部类的区别。
摘要由CSDN通过智能技术生成

07.内部类

1.内部类介绍:

  1. 内部类就是定义在一个类里面的类

    public class Outer{
        //内部类
        public class Inner
    }
    
  2. 内部类可以访问外部类的私有成员

  3. 创建内部类对象的格式:

    外部类名.内部类名 对象名 = new 外部类对象.new 内部类对象
    
    Outer.Inner oi = new Outer().new Inner()
    

2.内部类分类

  1. 静态内部类 :

    有static修饰,属于外部类本身,它的特点和使用与普通类是完全一样的,类有的成分它都有,只是位置在别人里面而已。

    创建静态内部类对象的格式是: 
    外部类名.内部类名 对象名 = new 外部类名.内部类名()
    
  2. 匿名内部类 :

    匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)
    前提:需要存在一个接口或类

public class LambdaTest5 {
    public static void main(String[] args) {
        useCompare((a, b) -> a==b);
    }

    public static void useCompare(Compare compare){
        boolean result = compare.compare(20,30);
        System.out.println(result);
    }

08.Lambda表达式

1.Lambda表达式的简介:

  1. Lambda表达式介绍:

    Lambda表达式是 JDK8 开始后的一种新语法形式。
    作用:简化匿名内部类的代码写法

    public static void main(String[] args) {
            useCalculator(new Calculator() {
                @Override
                public int calc(int a, int b) {
                    return a+b;
                }
            });
    
            System.out.println("----------------");
    
            useCalculator((int a,int b)->{return a-b;});
        }
    
        public static void useCalculator(Calculator calculator) {
            int result = calculator.calc(10, 20);
            System.out.println(result);
        }
    
    }
    
    interface Calculator {
        int calc(int a, int b);
    

2.Lambda表达式的细节:

  1. 注意 : Lambda 只能操作函数式接口

  2. 函数式接口 : 有, 且仅有一个抽象方法的接口(可以有多个方法)

    可以使用 @FunctionalInterface 注解, 来检查是否是函数式接口

  3. Lambda表达式并不是匿名内部类的语法糖,因为匿名内部类会生成新的字节码文件,但是Lambda表达式不会生成新的字节码文件

  4. Lambda表达式的省略规则

    1.如果 Lambda 表达式中的参数只有一个,可以省略参数小括号
    2如果 Lambda 表达式体中只有一条语句,那么可以省略 return,大括号和分号
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值