代码块的基础概念

代码块

类中有五大成分:成员变量,成员方法,构造器,代码块和内部类
代码块实际上和成员方法差不多,存在static修饰和无static修饰。使用static修饰的代码块称为静态代码块,不使用static修饰的是实例代码块。代码块主要用于在加载静态资源。

代码块的示例

静态代码块的形式:

static{
        
    }

实例代码块的形式:

{
        
}

实例代码块实际是放在构造器中的,在实例化对象时会先与构造器执行一次。

代码块的执行顺序

public class Codedemo {
    public static void main(String[] args) {
        Animal dog = new Dog();
    }

    static{
        System.out.println("调用类的静态代码块执行了");
    }

    {
        System.out.println("调用类的实例代码块执行了");
    }

}

class Animal{
    static {
        System.out.println("父类静态代码块执行了");
    }

    public Animal(){
        System.out.println("父类构造器执行了");
    }

    {
        System.out.println("父类实例代码块执行了");
    }
}

class Dog extends Animal{
    static {
        System.out.println("子类静态代码块执行了");
    }

    public Dog(){
        System.out.println("子类构造器执行了");
    }

    {
        System.out.println("子类实例代码块执行了");
    }
}

执行结果如下:

调用类的静态代码块执行了
父类静态代码块执行了
子类静态代码块执行了
父类实例代码块执行了
父类构造器执行了
子类实例代码块执行了
子类构造器执行了

在一个类中,静态代码块会最先执行,而实例代码块需要在创建实例时执行。(第一行)
前面说过,实例代码块实际上是在构造器中的,但会先与构造器执行,在创建子类时会默认在第一行调用父类的无参构造器。(后四行)
在初始化对象之前需要先将类加载至方法区内,同样会先加载父类,因此会先执行父类静态代码块,再加载子类从而加载子类静态代码块。

代码块的总结

在实际的使用过程中,静态代码块的使用频率远高于实例代码块,静态代码块可以用于加载静态资源,对于实例代码块来说,每个实例所需要实现的成员或方法可能不同,对于相同的可以在类中定义,因此代码块所实现的功能有点多此一举,因此实例代码块使用的频率很低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值