Java类中成员初始化顺序

本文通过一个具体的Java示例,解释了类实例化时的构造顺序,包括静态成员变量、成员变量及构造器的初始化过程。

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

先说结论,实例化一个类时,先初始化静态成员变量,再初始化成员变量,最后初始化构造器。其中,静态成员变量仅初始化一次,而成员变量的初始化顺序与类中定义的顺序有关(定义靠前的先初始化)。代码如下:

class Dog {

    Eye twoEyes = new Eye();
    public static Nose nose = new Nose();

    Dog() {
        System.out.println("我是一只可爱的小狗。");
    }

    Leg fourLegs = new Leg();
}

class Eye {

    Eye() {
        System.out.println("今天天气真好...");
    }
}

class Leg {
    Leg() {
        System.out.println("在外面放肆的奔跑...");
    }
}

class Nose {
    Nose() {
        System.out.println("空气真是小清新呀...");
    }
}

public class TestJava {

    private static final Logger LOGGER = LoggerFactory.getLogger(Test.class);

    public static void main(String[] args) {
        System.out.println("----------创建一只哈士奇,真调皮----------");
        Dog husky = new Dog();
        System.out.println("----------创建一只金毛,大暖男----------");
        Dog goldenRetriever = new Dog();
    }
}

 

运行结果如下:

----------创建一只哈士奇,真调皮----------
空气真是小清新呀...
今天天气真好...
在外面放肆的奔跑...
我是一只可爱的小狗。
----------创建一只金毛,大暖男----------
今天天气真好...
在外面放肆的奔跑...
我是一只可爱的小狗。

 

当然,这里的例子有个问题,哈士奇和金毛不能共用同一个鼻子(=^_^=)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值