JAVA——代码块

本文介绍了JAVA中的代码块,包括静态代码块和非静态代码块的执行特点。在类加载或创建对象时,静态代码块先于非静态代码块执行,且仅执行一次。而在有继承关系的情况下,父类的静态代码块、静态属性首先初始化,接着是父类和子类的非静态部分,最后是子类的构造方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

代码块使用:

静态代码块和非静态代码块的特点:

有继承关系时


代码块使用:

静态代码块随着类的加载而执行,非静态代码块创建对象时被执行。

类什么时候被加载:

1创建对象实例时(new)
2.创建子类对象实例,父类也会被加载
3.使用类的静态成员时(静态属性,静态方法)案例演示:A类extends B类的静态块
 

静态代码块和非静态代码块的特点:

1、 代码块的优先级比构造方法高。

2. 非静态代码块,在每次创建对象时,都会执行一次。

3. 静态代码块,只执行一次,并且在类加载的时候执行。

public class Test {

    public static void main(String args[]) {

        System.out.println(Xiao.name);//类加载,但未创建对象,所以直加载非静态代码块(非静态代码块只执行一次)
        Xiao xiao01 = new Xiao("xx",22);//创建对象,所以执行非静态代码块
        Xiao xiao02 = new Xiao("zz",22);//每创建一次对象,非静态代码块就会被执行一次
    }
}

class Xiao{
    public static String name = " "; //静态属性
    private int age = 22;

    public Xiao(String name, int age) {
    
        this.age = age;
    }
  
    //静态代码块
    static {
        System.out.println("静态代码块");
    }
    //非静态代码块
    {
        System.out.println("非静态代码块");
    }
}

/* 打印结果:
    静态代码块
    xx
    非静态代码块
    非静态代码块
*/

有继承关系时

创建一个子类对象时(继承关系),他们的静态代码块,静态属性初始化,普通代码块,普通属性初始化,构造方法的调用顺序如下:
1.父类的静态代码块和静态属性(优先级一样,按定义顺序执行)

2.子类的静态代码块和静态属性(优先级一样,按定义顺序执行)

3.父类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)

4.父类的构造方法

5.子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)子类的构造方法
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值