美文网首页JVM学习记
JVM(五)类的初始化

JVM(五)类的初始化

作者: r09er | 来源:发表于2020-03-24 14:41 被阅读0次

类的初始化

类的初始化步骤

  • 假如类还未被加载和连接,那就先进行加载和连接
  • 假如类存在直接父类,并且这个父类还未被初始化,那就先初始化父类
  • 假如类中存在初始化语句,那就一次执行初始化语句

类的初始化时机

7种主动使用和被动使用,会触发类的初始化

当初始化类的时候,要求父类都已经被初始化,但是这条规则不适用于接口(interface)

  • 初始化一个类时,并不会先初始化它所实现的接口
public class Test06 {

    public static void main(String[] args) {
        //调用类的静态属性,观察接口是否被初始化,如果被初始化,那么就会输出`Thread Parent init`
        System.out.println(ThreadChild.a);
    }
}
interface ThreadParent {
    public static Thread thread = new Thread() {
        {
            System.out.println("Thread Parent init");
        }
    };
}

/**
 *
 */
class ThreadChild implements ThreadParent {
    public static int a = 2;
}

在这个例子中,可以明确看出,初始化一个类,并不会实例化他的接口

  • 在初始化一个接口时,并不会先初始化它的父接口
public class Test06 {

    public static void main(String[] args) {
        System.out.println(ThreadChild.childThread);
    }
}
interface ThreadParent {
    public static Thread thread = new Thread() {
        {
            System.out.println("Thread Parent init");
        }
    };
}

interface ThreadChild extends ThreadParent {
    public static final Thread childThread = new Thread(){
        {
            System.out.println("child thread initialized");
        }
    };
}

这个例子中,获取接口的静态属性,可以发现并没有触发父接口的初始化,但是会触发父接口的加载

只有当程序访问的静态变量或静态方法确实在当前类或当前接口中定义时,才可认为是对类或接口的主动使用

  • 调用ClassLoader的loadClass方法加载一个类,并不是对类的主动使用,不会导致类的初始化

相关文章

  • 深入了解面试官会问到的JVM 类加载机制和双亲委派

    一.JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五...

  • 2020最新JAVA核心面试知识整理283页(带详解)

    部分目录预览 部分内容预览 JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下...

  • 类加载原理分析&动态加载Jar/Dex

    简书 编程之乐转载请注明原创出处! JVM类加载机制 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化...

  • Java——JVM篇——干货系列(终结篇)

    2.9.JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下...

  • JVM(五)类的初始化

    类的初始化 类的初始化步骤 假如类还未被加载和连接,那就先进行加载和连接 假如类存在直接父类,并且这个父类还未被初...

  • JVM类加载机制

    JVM类结构类加载类执行 类加载的五个过程:加载、验证、准备、解析、初始化。 加载: 根据全限定名来获取定义类的二...

  • 深入理解Java虚拟机之类加载机制

    虚拟机类加载机制 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,顺序如下 在这五个阶段中,加载、验...

  • Java类加载机制与反射

    1. 类的加载、连接和初始化 1.1 JVM和类 当调用java程序时,会启动一个JVM进程 JVM中止的情形: ...

  • interview指北

    类加载机制 如下图所示,JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个...

  • java类加载时机(主动-被动引用)

    JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化五个不分,什么情况下需要开始类加载过程的第一阶段:加载...

网友评论

    本文标题:JVM(五)类的初始化

    本文链接:https://www.haomeiwen.com/subject/himoyhtx.html