• java类加载和对象初始化


    对象初始化过程: 
    1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 
    2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 
    3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
    4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; 

    Java类加载机制

    1.概述

      Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。

          虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

    2.工作机制

          类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤:

       (1) 装载(加载):查找和导入Class文件;

         (2) 链接:把类的二进制数据合并到JRE中;

            (a)校验:检查载入Class文件数据的正确性;

            (b)准备:给类的静态变量分配存储空间;

            (c)解析:将符号引用转成直接引用;

         (3) 初始化:对类的静态变量,静态代码块执行初始化操作

     

    类什么时候才被初始化
      1)创建类的实例,也就是new一个对象
      2)访问某个类或接口的静态变量,或者对该静态变量赋值
      3)调用类的静态方法
      4)反射(Class.forName(“com.lyj.load”))
      5)初始化一个类的子类(会首先初始化子类的父类)
      6)JVM启动时标明的启动类,即文件名和类名相同的那个类

    加载器 
      JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述: 

     

  • 相关阅读:
    局部组件
    flex布局
    Websocket
    关于Javascript夜里再来分析下
    go build、go mod等命令
    websocket
    FileSystemWatcher使用
    DataGridView双缓冲
    C#读INI文件
    c 通过 COM接口调用 Excel.Application 问题终于解决
  • 原文地址:https://www.cnblogs.com/one-apple-pie/p/10503948.html
Copyright © 2020-2023  润新知