【愚公系列】2022年10月 Java教学课程 33-代码块

48 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情

一、代码块

1.代码块概述 (理解)

在Java中,使用 { } 括起来的代码被称为代码块

2.代码块分类 (理解)

  • 局部代码块

    • 位置: 方法中定义

    • 作用: 限定变量的生命周期,及早释放,提高内存利用率

    • 示例代码

      public class Test {
          /*
              局部代码块
                  位置:方法中定义
                  作用:限定变量的生命周期,及早释放,提高内存利用率
           */
          public static void main(String[] args) {
              {
                  int a = 10;
                  System.out.println(a);
              }
      
             // System.out.println(a);
          }
      }
      
  • 构造代码块

    • 位置: 类中方法外定义

    • 特点: 每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行

    • 作用: 将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性

    • 示例代码

      public class Test {
          /*
              构造代码块:
                  位置:类中方法外定义
                  特点:每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行
                  作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性
           */
          public static void main(String[] args) {
              Student stu1 = new Student();
              Student stu2 = new Student(10);
          }
      }
      
      class Student {
      
          {
              System.out.println("好好学习");
          }
      
          public Student(){
              System.out.println("空参数构造方法");
          }
      
          public Student(int a){
              System.out.println("带参数构造方法...........");
          }
      }
      
  • 静态代码块

    • 位置: 类中方法外定义

    • 特点: 需要通过static关键字修饰,随着类的加载而加载,并且只执行一次

    • 作用: 在类加载的时候做一些数据初始化的操作

    • 示例代码

      public class Test {
          /*
              静态代码块:
                  位置:类中方法外定义
                  特点:需要通过static关键字修饰,随着类的加载而加载,并且只执行一次
                  作用:在类加载的时候做一些数据初始化的操作
           */
          public static void main(String[] args) {
              Person p1 = new Person();
              Person p2 = new Person(10);
          }
      }
      
      class Person {
          static {
              System.out.println("我是静态代码块, 我执行了");
          }
      
          public Person(){
              System.out.println("我是Person类的空参数构造方法");
          }
      
          public Person(int a){
              System.out.println("我是Person类的带...........参数构造方法");
          }
      }