java复习——代码块

79 阅读2分钟

一、代码块

简介: 在一个类中,只有修饰符和方法体的部分,称为代码块

  1. 代码块是对类的构造器的补充机制

  2. 代码块可以将同一类中多个构造器中相同部分抽取出来,写在单独的块中

  3. 代码块运行优先于构造器

  4. 修饰符是可选的,如果有修饰符就只能是static

  5. 修饰符是statice就是静态代码块,否则就是普通代码块

  6. 对象每创建一次,普通代码块就被执行一次,而静态代码块只会被执行一次

  7. 格式

    [修饰符]{

    }

class test{
    private String name;//电影名
    private double price;//价格
    private String director;//导演
    
    //未使用代码块
    public test(String name){
        System.out.println("荧幕打开");
        System.out.println("广告");
        System.out.println("电影开始");
        this.name = name;
    }
    
    public test(String name,double price){
        System.out.println("荧幕打开");
        System.out.println("广告");
        System.out.println("电影开始");
        this.name = name;
        this.price = price;
    }
    
    public test(String name,double price,String director){
        System.out.println("荧幕打开");
        System.out.println("广告");
        System.out.println("电影开始");
        this.name = name;
        this.price = price;
        this.director = director;
    }
    //使用代码块后
    {
        System.out.println("荧幕打开");
        System.out.println("广告");
        System.out.println("电影开始");
    }
    
    public test(String name){
        this.name = name;
    }
    
    public test(String name,double price){
        this.name = name;
        this.price = price;
    }
    
    public test(String name,double price,String director){
        this.name = name;
        this.price = price;
        this.director = director;
    }
    
}

代码块细节

一、静态代码块

静态代码块:修饰符为static,随着类的加载而加载,只加载一次

作用:对类进行初始化

二、类什么时候被加载[重要!]

  1. 当对象被实例化时(new)
  2. 当对象的子类被实例化时
  3. 当对象中的静态属性或静态方法被调用时

三、类中静态代码块、普通代码块和构造器的运行顺序

  1. 先运行类中的静态属性和静态代码块(如果有多个静态属性和静态代码块,则按编写顺序执行)
  2. 然后运行类中的普通属性和普通代码块(如果有多个普通属性和普通代码块,则按编写顺序执行)
  3. 最后运行构造器

四、构造器运行顺序

构造器中包含一个super()和一个调用普通代码块的方法;

super()是调用父类的无参构造器;

只有对象被创建时构造器才会被调用;

class A extends 父类{
    {
        sout("A 的普通代码块");
    }
    
    public A(){
        super();
        //这里还有一个调用普通代码块的方法
        sout("A 构造方法");
    }
}

五、继承关系中类的静态代码块、普通代码块和构造器的运行顺序

  1. 父类静态代码块、静态属性和静态方法
  2. 子类静态代码块、静态属性和和静态方法
  3. 父类普通代码块、普通属性和和普通方法
  4. 父类构造方法
  5. 子类普通代码块、普通属性和和普通方法
  6. 子类构造方法

六、调用

静态代码块只能调用静态成员,普通代码块可以调用任意成员