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

类加载时机及顺序

1、静态加载与动态加载

  • 静态加载:编译时加载相关的类,如果没有相关的类则报错,依赖性太强
  • 动态加载:运行时加载需要的类,如果运行时不用该类,即使不存在该类,也不会报错,降低了依赖性

静态加载: 如果a类引入了b类的代码,相当于把 b类中的代码放在了a类中使用。

动态加载:如果a类引入b类的代码,不同的是a类不存放b类代码,等待a需要使用到b类中的代码时,才会去找b类中的代码进行执行。

2、类加载的时机

类的主动引用(一定会发生初始化)
  1. 当服务器重新启动时,先初始化main方法所在的类。//静态加载
  2. new一个新的对象时。//静态加载
  3. 调用类中的静态成员时(除了final常量、静态方法)。//静态加载
  4. 通过反射进行调用。 //动态加载
  5. 当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类。
类的被动引用(不会发生类的初始化)
  1. 当访问一个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化。
  2. 通过数组定义类引用,不会触发此类的初始化。
  3. 引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)。

3、类加载顺序

1. 我们看一下创建一个子类对象时(继承关系),他们的静态代码块,静态属性初始化,普通代码块,普通属性初始化,构造方法的调用顺序如下:
①父类的静态代码块和静态属性(优先级一样,按定义顺序执行)
②子类的静态代码块和静态属性(优先级一样,按定义顺序执行)
③父类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
④父类的构造方法
⑤子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)子类的构造方法

2. 静态代码块只能直接调用静态成员(静态属性和静态方法),普通代码块可以调
用任意成员。

相关文章:

  • SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)
  • Flutter-Web从0到部署上线(实践+埋坑)
  • 【MySQL】导入导出SQL脚本及远程备份---超详细介绍
  • GIT 分支管理办法(二)
  • Redis中的Java客户端
  • 设计模式——适配器模式
  • 通过代理连接sftp
  • 汇编和C语言转换
  • 深入理解Lock Support
  • 2024年01月微软更新Bug 已解决 !Explorer.EXE 提示:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。
  • 测绘资质工程测量乙级资质办理条件
  • 强力推荐:本地文件加密软件—超详细加密步骤来了!
  • 概念解析 | 感知世界的无形之“波”:WiFi感知中的信道状态信息(CSI)探秘
  • 【Golang】十六进制字符串转二进制字符串
  • vue前端开发自学,插槽练习第二次,name属性的使用
  • ES6指北【2】—— 箭头函数
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • C语言笔记(第一章:C语言编程)
  • egg(89)--egg之redis的发布和订阅
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • node-glob通配符
  • Object.assign方法不能实现深复制
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 记一次用 NodeJs 实现模拟登录的思路
  • 模型微调
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 十年未变!安全,谁之责?(下)
  • 《天龙八部3D》Unity技术方案揭秘
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​​​​​​​​​​​​​​Γ函数
  • ​插件化DPI在商用WIFI中的价值
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #每日一题合集#牛客JZ23-JZ33
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (03)光刻——半导体电路的绘制
  • (1)(1.13) SiK无线电高级配置(五)
  • (二)fiber的基本认识
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (三)uboot源码分析
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET CLR Hosting 简介
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net 后台导出excel ,word
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net反编译工具
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET中使用Redis (二)
  • :not(:first-child)和:not(:last-child)的用法