Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)

简介: Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)

初始化过程是这样的:


1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;

2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;

3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;

4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;


类的加载顺序:


父类静态成员变量、静态块>子类静态成员变量、 静态块>父类普通成员变量、非静态块>父类构造函数>子类 普通成员变量、非静态块>子类构造函数


静态代码块:随着类的加载而执行,而且只执行一次
非静态代码块:每创建一个对象,就执行一次非静态代码块


关于各个成员简介:


类的成员总结(属性,方法,构造器,代码块,内部类)

小练习:


下面代码输出结果是


class C {
    C() {
        System.out.print("C");
    }
}
class A {
    C c = new C();
    A() {
        this("A");
        System.out.print("A");
    }
    A(String s) {
        System.out.print(s);
    }
}
class Test extends A {
    Test() {
        super("B");
        System.out.print("B");
    }
    public static void main(String[] args) {
        new Test();
    }
}



相关文章
|
11天前
|
存储 Java
java基础(7)变量以及变量的分类
Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
26 2
|
29天前
|
存储 Java 开发者
【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
48 11
|
1月前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
2月前
|
安全 Java 关系型数据库
Java连接Mysql SSL初始化失败
Java连接Mysql SSL初始化失败
|
22天前
|
JavaScript 前端开发 Java
通过JUnit5访问Java静态、私有、保护变量和方法
在《通过Gtest访问C++静态、私有、保护变量和方法》一文中介绍了如何通过Gtest访问C++静态、私有、保护变量和方法,本文介绍如何通过Junit5访问Java静态、私有、保护变量和方法。
18 0
|
2月前
|
存储 Java 编译器
如何在 Java 中初始化对象 Arraylist?
【8月更文挑战第23天】
65 0
|
Java 程序员 Go
Java基础6:代码块与代码加载顺序
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/80069472 这位大侠,这是我的公众号:程序员江湖。
|
7天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
21 2
|
11天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
16天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。
下一篇
无影云桌面