当前位置: 首页 > news >正文

java 类加载顺序

1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化
 2、只有在调用new方法时才会创建类的实例
 3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法
 4、类实例销毁时候,首先销毁子类部分,再销毁父类部分

复制代码
public class Parent
{
    public static int t = parentStaticMethod2();
    {
        System.out.println("父类非静态初始化块");
    }
    static
    {
        System.out.println("父类静态初始化块");
    }
    public Parent()
    {
        System.out.println("父类的构造方法");
    }
    public static int parentStaticMethod()
    {
        System.out.println("父类类的静态方法");
        return 10;
    }
    public static int parentStaticMethod2()
    {
        System.out.println("父类的静态方法2");
        return 9;
    }
  
    @Override
    protected void finalize() throws Throwable
    {
        // TODO Auto-generated method stub
        super.finalize();
        System.out.println("销毁父类");
    }
    
}
复制代码
复制代码
public class Child extends Parent
{
    {
        System.out.println("子类非静态初始化块");
    }
    static
    {
        System.out.println("子类静态初始化块");
    }
    public Child()
    {
        System.out.println("子类的构造方法");
    }
    public static int childStaticMethod()
    {
        System.out.println("子类的静态方法");
        return 1000;
    }
    @Override
    protected void finalize() throws Throwable
    {
        // TODO Auto-generated method stub
        super.finalize();
        System.out.println("销毁子类");
    }
}
复制代码
复制代码
public class Test
{
   
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        Parent.parentStaticMethod();
//        Child child = new Child();
        
    }

}
复制代码

输出

父类的静态方法2
父类静态初始化块
父类类的静态方法

类中static 方法在第一次调用时加载,类中static成员按在类中出现的顺序加载。当调用静态方法2时输出

父类的静态方法2
父类静态初始化块
父类的静态方法2

注释掉Parent.parentStaticMethod();

去掉注释Child child = new Child();

复制代码
父类的静态方法2
父类静态初始化块
子类静态初始化块
父类非静态初始化块
父类的构造方法
子类非静态初始化块
子类的构造方法
复制代码

转载于:https://www.cnblogs.com/wangzehuaw/p/4760119.html

相关文章:

  • spring学习第二天
  • 翻译研讨VOA时事报道20091107 Karzai的第二次选举;美国失业率达10.2%
  • redis持久化RDB和AOF
  • pgadmin 的安装
  • IT技术风向标
  • Linux查看是否被入侵
  • 如何正确地处理时间
  • 博为峰Java技术题 ——JavaSE Java JDBC数据库查询代码实例
  • 台湾富士康捐10亿助力清华
  • 缓存与缓冲
  • 一个JAVA程序员的成长经历
  • 记萌新赛的命题过程与踩气球过程
  • Mysql的连接状态
  • java集合类(二)
  • 对OpenCV中Haar特征CvHaarClassifierCascade等结构理解
  • 【mysql】环境安装、服务启动、密码设置
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Fastjson的基本使用方法大全
  • input的行数自动增减
  • iOS 颜色设置看我就够了
  • JavaScript设计模式与开发实践系列之策略模式
  • MYSQL 的 IF 函数
  • Node + FFmpeg 实现Canvas动画导出视频
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • vue.js框架原理浅析
  • Wamp集成环境 添加PHP的新版本
  • Web设计流程优化:网页效果图设计新思路
  • 关于extract.autodesk.io的一些说明
  • 检测对象或数组
  • 深度学习在携程攻略社区的应用
  • 译自由幺半群
  • 在Mac OS X上安装 Ruby运行环境
  • 1.Ext JS 建立web开发工程
  • 交换综合实验一
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #《AI中文版》V3 第 1 章 概述
  • #pragam once 和 #ifndef 预编译头
  • #微信小程序(布局、渲染层基础知识)
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)bark-ml
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (阿里云万网)-域名注册购买实名流程
  • (二十三)Flask之高频面试点
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(一):@echo off
  • .Net 8.0 新的变化
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET连接数据库方式
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .sh 的运行
  • @Conditional注解详解
  • @EnableWebMvc介绍和使用详细demo