美文网首页
类加载的顺序

类加载的顺序

作者: 耐得千事烦 | 来源:发表于2019-08-22 14:15 被阅读0次

面试中经常问到的类初始化的顺序,现在给出个总结然后贴一段代码:

类初始化(注意先父类后子类)
1.类的静态变量、静态方法申明
2.静态变量进行赋值
3.静态代码块运行。
实例初始化(注意先父类后子类):
1.普通成员变量、方法申明
2.普通成员变量赋值
3.普通代码块运行
4.构造函数运行

Ps:如果在类的初始化过程中调用了实例化过程(如new了本类的对象)则会暂停加载类初始化转而先去加载实例化过程,结束以后再回归到类的初始化过程。

Ps:jvm虚拟机在初始化类的时候不会一边申明静态变量、静态方法一边给静态变量赋值,它只会先声明完所有的静态属性和方法,然后再按照代码顺序对静态属性进行赋值处理。而在这中间的过程(申明结束但是还没赋值的时候)所有的静态属性都为零值。

代码:

public class Test {

    public static int k = 0;

    public static Test t1 = new Test("t1");

    public static Test t2 = new Test("t2");

    public static int i  = print("i");

    public static int n = 99;

    public static int j = print("j");

    static {
        print("静态块");
    }

    {
        print("构造块");
    }



    public Test(String str) {
        System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
        ++n;
        ++i;
    }


    public static int print(String str) {
        System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
        ++n;
        return ++i;
    }

    public static void main(String[] args) {



    }

}

相关文章

  • JVM类加载入门

    一 类加载顺序 class类加载-->验证-->准备--->解析--->初始化 class类加载:通过类加载器加载...

  • 类的加载过程

    类的加载过程 类文件加载的顺序 1、先加载执行父类的静态变量及静态初始化块(执行先后顺序按排列的先后顺序)2、再加...

  • 类初始化和加载过程

    一、对象的初始化顺序: java类加载器加载类的顺序:http://blog.csdn.net/crazycode...

  • 类加载顺序

    首先,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class)。而JVM把Cla...

  • 类加载顺序

    主要说的是类加载过程中,各种类型的成员变量的加载顺序1.先静态变量,后普通变量。2.new一个类的实例,会先检测是...

  • 类加载顺序

    fa staticsub staticfa {}fa ()sub {}sub ()

  • 类的加载顺序

    1.加载 2.连接 3.初始化 4.使用 5.卸载 连接中 分3个过程:验证、准备、解析。准备阶段会给类变量分配...

  • 类加载的顺序

    面试中经常问到的类初始化的顺序,现在给出个总结然后贴一段代码: 类初始化(注意先父类后子类)1.类的静态变量、静态...

  • 类的加载顺序

    原文链接https://blog.csdn.net/gongzi2311/article/details/3952...

  • 安卓面试概要点

    Java基础 访问修饰符 √ 类加载深入理解Java类加载器ClassLoaderJava中类加载的执行顺序 泛型...

网友评论

      本文标题:类加载的顺序

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