一个类被初始化的过程
Posted super码王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个类被初始化的过程相关的知识,希望对你有一定的参考价值。
在上一讲中我们了解了 JVM一个类的加载过程 :
JVM一个类的加载过程_super码王的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/123823226其中,初始化阶段是我们作为程序员最关心的阶段,我们下面就来仔细剖析一下其中的缘由。
类的初始化阶段,java虚拟机才真正开始执行类中编写的java代码;
进行准备阶段时,变量已经赋过一次系统要求的初始零值,而在初始化阶段,才真正初始化类变量和其他资源;
代码演示
package com.wust.yq;
public class Hello
//静态常量 == 准备阶段就赋予自己该有的值
public static final String staticConstantField = "静态常量";
//静态变量 == 准备阶段赋予零值(int = 0 引用 = null),初始化阶段赋予自己该有的值
public static String staticField = "静态变量";
//实例变量 == 创建对象的时候赋值
public String field = "变量";
//静态初始化块 == 初始化阶段执行
static
System.out.println(staticConstantField);
System.out.println(staticField);
System.out.println("静态初始化块");
//初始化块 == 创建对象的时候执行
System.out.println(field);
System.out.println("初始化块");
//构造器 == 创建对象的时候执行
public Hello()
System.out.println("构造器");
// -XX:+TraceClassLoading 监控类的加载
public static void main(String[] args)
//这句话决定了是否初始化对象,决定了 实例变量 、初始化块 和 构造器是否执行
// new Hello();
演示结果
未创建 hello 对象:
创建 hello 对象
以上是关于一个类被初始化的过程的主要内容,如果未能解决你的问题,请参考以下文章