3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法

01-代码块

代码块介绍

图片[1]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

代码块格式

  1. 局部代码块:方法中的一对 { }
  2. 作用:可以限定变量的生命周期,提早释放内存
  3. 构造代码块:类中方法外的一对 { }
  1. 执行时机:创建对象的时候要执行构造代码块,在执行方法之前,会先执行构造代码块
  2. 细节:在字节码文件中,构造代码块的代码,会分散到该类的所以构造方法中
  3. 作用:发现多个构造方法中,存在着相同的代码,就可以考虑使用构造代码块进行优化
  4. 静态代码块:类中方法外的一对 { } 需要加入static修饰
  5. 执行时机:随着类的加载而执行,
  6. –因为类只加载一次,静态代码块也会在类加载的时候,只执行一次
  7. 作用:项目的初始化操作
  1. 加载数据库驱动
  2. 加载配置文件

小练习:看看哪个代码先执行

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-内部类

内部类介绍 :

  • 内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(宿主)。
图片[2]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
  • 内部类通常可以方便访问外部类的成员,包括私有的成员。
  • 创建内部类对象 :
图片[3]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

好处:

  • 可以直接访问类中的成员变量,包括私有
  • 可以更好的进行封装设计

内部类的分类 :

  • 成员内部类

上面介绍就是成员内部类

  • 静态成员内部类
  • 有static修饰,属于外部类本身

它的特点和使用与普通类是完全一样的,类有的成分它都有,只是位置在别人里面而已。

图片[4]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
图片[5]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
图片[6]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
  • 局部内部类 (了解) —-鸡肋
  • 局部内部类放在方法、代码块、构造器等执行体中。
  • 匿名内部类 (特殊的局部内部类)
  • 调用一个方法,方法的形参是接口,该传入的是接口的实现类对象
  • 概述:匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)
    前提:需要存在一个接口或类
图片[7]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
  • 使用场景 :  匿名内部类可以作为方法的实际参数进行传输
图片[8]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
  • 理解:匿名内部类是将(继承 \ 实现)(方法重写)(创建对象)三个步骤,放在了一步进行
图片[9]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

03-Lambda表达式

介绍

Lambda表达式介绍:

Lambda表达式是JDK8开始后的一种新语法形式。

作用:简化匿名内部类的代码写法。

体验

图片[10]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

格式

图片[11]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

注意

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

函数式接口 :  有, 且仅有一个抽象方法的接口

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

简化规则

图片[12]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

04-Lambda表达式和匿名内部类的区别

图片[13]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

Lambda表达式是否是匿名内部类的语法糖

图片[14]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

05-模板设计模式

图片[15]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站

06-Object中的toString方法

图片[16]-3.6 代码块-内部类-Lambda表达式-模板设计模式-toString方法-IT熊技术站
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容