01-代码块
代码块介绍
代码块格式
- 局部代码块:方法中的一对 { }
- 作用:可以限定变量的生命周期,提早释放内存
- 构造代码块:类中方法外的一对 { }
- 执行时机:创建对象的时候要执行构造代码块,在执行方法之前,会先执行构造代码块
- 细节:在字节码文件中,构造代码块的代码,会分散到该类的所以构造方法中
- 作用:发现多个构造方法中,存在着相同的代码,就可以考虑使用构造代码块进行优化
- 静态代码块:类中方法外的一对 { } 需要加入static修饰
- 执行时机:随着类的加载而执行,
- –因为类只加载一次,静态代码块也会在类加载的时候,只执行一次
- 作用:项目的初始化操作
- 加载数据库驱动
- 加载配置文件
小练习:看看哪个代码先执行
package com.itheima.codeblock; public class CodeDemo2 { static { System.out.println("CodeDemo2...static..."); } public static void main(String[] args) { Zi z = new Zi(); } } class Fu { static { System.out.println("Fu...static"); } { System.out.println("Fu...构造代码块"); } public Fu() { System.out.println("Fu...空参构造方法"); } public Fu(int num) { System.out.println("Fu...带参构造方法"); } } class Zi extends Fu { static { System.out.println("Zi...static"); } { System.out.println("Zi...构造代码块"); } public Zi() { System.out.println("Zi...空参构造方法"); } public Zi(int num) { System.out.println("Zi...带参构造方法"); } }
02-内部类
内部类介绍 :
- 内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(宿主)。
- 内部类通常可以方便访问外部类的成员,包括私有的成员。
- 创建内部类对象 :
好处:
- 可以直接访问类中的成员变量,包括私有
- 可以更好的进行封装设计
内部类的分类 :
- 成员内部类
上面介绍就是成员内部类
- 静态成员内部类
- 有static修饰,属于外部类本身
它的特点和使用与普通类是完全一样的,类有的成分它都有,只是位置在别人里面而已。
- 局部内部类 (了解) —-鸡肋
- 局部内部类放在方法、代码块、构造器等执行体中。
- 匿名内部类 (特殊的局部内部类)
- 调用一个方法,方法的形参是接口,该传入的是接口的实现类对象
- 概述:匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)
前提:需要存在一个接口或类
- 使用场景 : 匿名内部类可以作为方法的实际参数进行传输
- 理解:匿名内部类是将(继承 \ 实现)(方法重写)(创建对象)三个步骤,放在了一步进行
03-Lambda表达式
介绍
Lambda表达式介绍:
Lambda表达式是JDK8开始后的一种新语法形式。
作用:简化匿名内部类的代码写法。
体验
格式
注意
注意 : Lambda 只能操作函数式接口
函数式接口 : 有, 且仅有一个抽象方法的接口
可以使用 @FunctionalInterface 注解, 来检查是否是函数式接口