实例解析JAVA中代码的加载顺序
发布时间 - 2026-01-11 00:44:22 点击率:次Java中代码的加载顺序所能了解的知识点

类的依赖关系
static代码块的加载时间
继承类中构造器的隐式调用
非static的成员变量初始化时间
main方法和static的加载顺序
测试代码如下:
public class App {
private static App d = new App();
private SubClass t = new SubClass();
static{
System.out.println("App static");//6
}
public App(){
System.out.println("构建App");//5
}
public static void main(String[] args) {
System.out.println("App main");//7
}
}
//父类
class SuperClass{
static{
System.out.println("SuperClass static");//1
}
SuperClass(){
System.out.println("构建SuperClass");//3
}
}
//子类
class SubClass extends SuperClass{
static{
System.out.println("SubClass static");//2
}
public SubClass(){
//super()
System.out.println("构建SubClass");//4
}
}
输出结果
SuperClass static SubClass static 构建SuperClass 构建SubClass 构建App App static App main
分析
因为在App类中,声明了SubClass的变量,所以JVM先加载SubClass类,不然无法编译App。
SubClass是SuperClass的子类,在继承关系的类中,父类先加载进JVM,不然子类无法编译。
在类中static代码会在字节码文件加载进JVM的时候调用一次,且在该类的生命周期中只会调用一次。所以在第一行输出的是SuperClass static,随后SubClass加载进了JVM,输出第二行的SubClass static
声明的static成员变量,其初始化是在static代码块中。非static成员变量,其初始化是在构造器中,且是在构造器的代码前面。
创建静态的成员变量d之前会先创建成员变量t,在SubClass的构造器中会隐式的使用super()调父类的构造器,所以第三行输出构建SuperClass,第四行输出SubClass。
在App的构造器中创建好了成员变量t后,向下执行,输出第五行的构建App。
随后继续执行App的静态代码块(因为d是static的变量,所以并不是说App的构造器比static先执行),输出第六行的App static。
最后执行public类的入口方法main,输出第七行的App main。
希望本篇文章对您有所帮助
# JAVA中代码的加载顺序实例
# JAVA代码加载顺序
# 详解Spring Boot 配置加载顺序及属性加载顺序
# Java代码块与代码加载顺序原理详解
# Java中类的加载顺序剖析(常用于面试题)
# java 如何查看jar包加载顺序
# 加载
# 是在
# 子类
# 类中
# 器中
# 行输出
# 的是
# 好了
# 隐式
# 会在
# 进了
# 只会
# 是说
# 所能
# 对您
# 会先
# brush
# class
# java
# public
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Java解压缩zip - 解压缩多个文件或文件夹实例
如何用花生壳三步快速搭建专属网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel如何创建自定义Facades?(详细步骤)
如何用免费手机建站系统零基础打造专业网站?
如何用PHP工具快速搭建高效网站?
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
深圳网站制作培训,深圳哪些招聘网站比较好?
如何在万网ECS上快速搭建专属网站?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Laravel Fortify是什么,和Jetstream有什么关系
如何用景安虚拟主机手机版绑定域名建站?
网站制作免费,什么网站能看正片电影?
Laravel如何使用Vite进行前端资源打包?(配置示例)
微信小程序 require机制详解及实例代码
JavaScript如何实现类型判断_typeof和instanceof有什么区别
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
linux top下的 minerd 木马清除方法
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
原生JS获取元素集合的子元素宽度实例
利用vue写todolist单页应用
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
如何快速搭建支持数据库操作的智能建站平台?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
详解Android图表 MPAndroidChart折线图
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
如何快速搭建FTP站点实现文件共享?
香港服务器如何优化才能显著提升网站加载速度?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何确保西部建站助手FTP传输的安全性?
使用C语言编写圣诞表白程序
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
,怎么在广州志愿者网站注册?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Bootstrap CSS布局之列表
如何用腾讯建站主机快速创建免费网站?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel如何处理CORS跨域请求?(配置示例)
如何为不同团队 ID 动态生成多个“认领值班”按钮
浅谈Javascript中的Label语句
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决

