`

类的加载以及初始化

阅读更多

         JAVA中当调用某个类的静态方法或者是new一个对象时,类加载器就会去加载此类,如果这个类就基类的话,那么这个类的基类也会加载,如果基类还有基类就继续加载,以此类推。等所有的基类都加载完后,就开始对静态成员进行初始化,并且所有的静态代码也会执行。但是初始化的顺序与加载的顺序相反,加载是先加载子类后加载基类以此类推,而初始化是先初始化父类然后在初始化子类,等这些都完成了后,所有的类都加载到了内存中,可以new了,在new一个对象的时候,首先给此类分配空间,然后将空间初始化为0(基本类型初始化为0,引用初始化为null),然后就是调用夫类的构造器来初始化从夫类继承的成员,如果夫类还有夫类那么用同样的方法进行初始化,在执行夫类构造器代码之前,首先要进行夫类成员的显示初始化,然后才执行构造器里的代码。

         因此我们可以把构造器分为三步来执行:1) 调用夫类构造器(即使不显示的调用,JAVA中也会默认调用        2 )执行此类成员的显示初始化(这个过程对于我们是透明的,我们看不到,但是它确实会执行) 3) 执行构造器里的代码。。 

分享到:
评论

相关推荐

    java JVM 类加载-初始化 过程

    java JVM 类加载-初始化 过程

    Java虚拟机JVM类加载初始化

    Java虚拟机JVM类加载初始化是Java程序运行过程中的关键环节,它负责将类的字节码文件加载到内存中并进行相应的处理,以便程序能够正确执行。在Java中,类加载器(Classloader)扮演着核心角色。下面将详细讨论类加载...

    Java类加载器:静态变量初始化.docx

    Java 类加载器静态变量初始化机制详解 Java 类加载器是 Java 语言的核心组件之一,负责将 Java 字节码文件加载到内存中,以便 JVM 可以执行它们。在 Java 中,类加载器是通过委派机制来实现的,即一个类加载器可以...

    全局变量初始化导致的dll加载失败工程

    标题中的“全局变量初始化导致的dll加载失败工程”是一个典型的C++编程问题,涉及到动态链接库(DLL)的加载机制以及全局变量的初始化顺序。在C++编程中,全局变量的初始化顺序是一个需要深入理解的概念,尤其是在...

    探究java的ClassLoader及类变量初始化顺序

    理解ClassLoader的工作机制以及类变量初始化的顺序对于深入理解Java运行时环境至关重要。这篇博文将探讨这两个主题。 首先,让我们深入了解Java的ClassLoader。ClassLoader是一个抽象类,它是Java中的一个关键组件...

    深入java虚拟机加载初始化

    通过以上分析,我们可以看到Java虚拟机的类加载初始化过程是一个复杂但有序的过程。理解这些基本概念对于编写高效、可靠的Java应用程序至关重要。希望本文能够帮助您更好地掌握Java虚拟机的核心机制之一:类加载初始...

    C++全局变量初始化的一点总结

    静态初始化发生在程序加载时,主要针对那些可以用常量表达的初始化,例如零初始化(zero initialization)和常量初始化(const initialization)。零初始化的变量通常存放在BSS段,而常量初始化的变量则位于数据段,...

    java面试题-类的初始化顺序.doc

    此外,静态初始化块只在类加载时执行一次,而初始化块(也称为实例初始化块)会在每次创建类的新实例时执行。这意味着静态成员和静态初始化块对于所有类的实例都是共享的,而实例成员和实例初始化块则是每个对象独有...

    解析Java虚拟机中类的初始化及加载器的父委托机制共14页

    本文将深入探讨Java虚拟机中的类初始化以及加载器的父委托机制。 一、类的加载 类加载是JVM启动时或运行中根据需要动态加载类到内存中的过程。这个过程分为三个阶段:加载、链接和初始化。 1. 加载:JVM通过类...

    java中类的初始化顺序

    类的初始化涉及到多个方面,包括静态成员变量、实例成员变量、静态初始化块、实例初始化块以及构造函数等。本文将详细探讨Java中类的初始化过程及其顺序,并通过具体的代码示例来帮助理解这一过程。 #### 二、基础...

    java程序初始化顺序

    在Java编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...

    Java类继承初始化顺序

    静态初始化块用于初始化类级别的静态变量,它们只在类加载时执行一次。 2. **成员变量初始化**:接下来,初始化父类的非静态成员变量,这是通过调用父类的构造器实现的。Java规定每个子类实例在构造之前必须先调用...

    Java类加载连接和初始化原理解析

    Java类加载连接和初始化原理分析 Java类加载连接和初始化是Java虚拟机(JVM)中一个非常重要的机制,它们共同完成了类从加载到初始化的整个过程。下面我们将详细介绍Java类加载连接和初始化原理分析。 一、类加载 ...

    Java静态初始化块和对象初始化块

    这两种初始化块在创建类实例或加载类时分别扮演着不同的角色。 **静态初始化块** 静态初始化块是以`static`关键字标识的代码块,它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态初始化块常用于设置类...

    类初始化和实例初始化1

    首先,我们来看类的初始化过程,也称为类加载与初始化。当Java虚拟机(JVM)首次遇到某个类的实例或者静态变量,或者当类的静态方法被调用时,会触发类的加载和初始化。类的初始化主要涉及到以下几个步骤: 1. 类...

    java代码的初始化顺序demo

    总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...

    详解Spring 中如何控制2个bean中的初始化顺序

    例如,假设我们有 2 个 bean A 和 B,B 加载的文件依赖 A 中加载的全局配置文件中的路径,所以需要 A 先于 B 初始化。此外,A 中的配置改变后也需要触发 B 的重新加载逻辑,所以 A 和 B 需要互相注入。 方案一:...

    深入java虚拟机(三)——类的生命周期(下)类的初始化1

    了解类的初始化对于优化代码性能、避免并发问题以及理解Java程序的行为至关重要。在实际编程中,我们需要注意静态初始化的时机,因为这可能会影响程序的全局状态。同时,合理的初始化策略也可以帮助我们编写出更加...

Global site tag (gtag.js) - Google Analytics