网站建设优化服务器深圳网站建设公司是

张小明 2026/1/10 14:09:40
网站建设优化服务器,深圳网站建设公司是,网站建设 豫icp备,网站内链少改怎么做一、先明确两个 “构造方法” 的核心区别Java 中有两种不同的 “构造方法”#xff0c;二者的作用、执行时机完全无关#xff1a;构造方法类型名称#xff08;字节码层面#xff09;通俗理解手动定义方式核心作用类构造方法clinit()静态构造器、类初始化方法无需手…一、先明确两个 “构造方法” 的核心区别Java 中有两种不同的 “构造方法”二者的作用、执行时机完全无关构造方法类型名称字节码层面通俗理解手动定义方式核心作用类构造方法clinit()静态构造器、类初始化方法无需手动定义编译器自动生成初始化类的静态资源静态变量、静态代码块实例构造方法init()对象构造器、构造函数public 类名(...) { ... }初始化对象的实例资源实例变量、实例代码块二、类加载初始化阶段仅执行类构造方法clinit()不执行实例构造方法init()类加载的「初始化阶段」是类加载流程的第 5 步加载→验证→准备→解析→初始化其核心任务就是执行类构造方法clinit()而实例构造方法init()与类加载无关仅在创建对象new关键字、反射等时执行。1. 类构造方法clinit()的核心特性自动生成由编译器自动收集类中的「静态变量显式赋值语句」和「静态代码块static{}」按书写顺序合并生成无需开发者手动定义仅执行一次JVM 保证一个类的clinit()方法在多线程环境下被同步执行且仅执行一次类初始化的原子性父类优先执行若当前类有父类且父类未初始化JVM 会先执行父类的clinit()方法再执行当前类的clinit()无参数无返回值字节码层面的特殊方法无法通过反射直接调用可通过Class.forName()间接触发可选生成若类中没有静态变量显式赋值也没有静态代码块编译器不会生成clinit()方法初始化阶段无需执行任何操作。2. 实例构造方法init()的执行时机实例构造方法init()是对象实例化阶段的方法与类加载的初始化阶段无关只有通过以下方式创建对象时才会执行new 类名()直接创建对象反射Class.newInstance()已过时、Constructor.newInstance()反序列化从字节流恢复对象时克隆Object.clone()需实现Cloneable接口。三、代码示例验证初始化阶段的执行行为示例 1类初始化阶段执行clinit()静态资源初始化java运行public class ClassInitDemo { // 1. 静态变量显式赋值会被收集到clinit()中 private static int staticVar initStaticVar(); // 2. 静态代码块会被收集到clinit()中按书写顺序执行 static { System.out.println(类初始化执行静态代码块); staticVar 10; } // 静态变量初始化方法 private static int initStaticVar() { System.out.println(类初始化执行静态变量赋值方法); return 5; } // 3. 实例构造方法init()类初始化阶段不执行 public ClassInitDemo() { System.out.println(对象实例化执行实例构造方法); this.instanceVar 20; } // 实例变量与类初始化无关 private int instanceVar; public static void main(String[] args) { System.out.println( 开始执行main方法触发类初始化 ); System.out.println(静态变量值 ClassInitDemo.staticVar); System.out.println(\n 创建对象触发实例构造方法 ); new ClassInitDemo(); } }执行结果plaintext类初始化执行静态变量赋值方法 类初始化执行静态代码块 开始执行main方法触发类初始化 静态变量值15 创建对象触发实例构造方法 对象实例化执行实例构造方法结果分析程序运行时main方法调用ClassInitDemo.staticVar触发类的主动使用进入类初始化阶段初始化阶段自动执行clinit()方法按顺序执行「静态变量赋值」和「静态代码块」输出前两行日志类初始化完成后才执行main方法中的打印语句只有当执行new ClassInitDemo()时才会调用实例构造方法init()输出对象实例化日志这一步与类加载的初始化阶段无关。示例 2验证clinit()仅执行一次java运行public class ClinitOnceDemo { static { System.out.println(类初始化clinit() 执行); } public ClinitOnceDemo() { System.out.println(对象实例化init() 执行); } public static void main(String[] args) { // 第一次创建对象先触发类初始化clinit()执行再执行init() new ClinitOnceDemo(); // 第二次创建对象仅执行init()clinit()不再执行 new ClinitOnceDemo(); // 第三次创建对象仍仅执行init() new ClinitOnceDemo(); } }执行结果plaintext类初始化clinit() 执行 对象实例化init() 执行 对象实例化init() 执行 对象实例化init() 执行结果分析类的clinit()方法仅在第一次主动使用时执行一次后续无论创建多少个对象都不会再执行实例构造方法init()每次创建对象时都会执行与类初始化阶段无关。四、补充类初始化阶段的触发条件主动使用只有满足「主动使用」条件时JVM 才会触发类的初始化执行clinit()常见主动使用场景包括通过new关键字创建类的实例调用类的静态变量非final修饰final静态常量存入常量池属于被动使用调用类的静态方法通过反射Class.forName(类全限定名)主动加载类初始化子类时父类会被优先初始化主动使用子类触发父类主动使用执行包含main()方法的主类程序入口类必然会被初始化。五、总结类加载的初始化阶段不会执行实例构造方法init()即平时写的构造函数仅执行类构造方法clinit()类构造方法clinit()是编译器自动生成的用于初始化静态变量和静态代码块仅执行一次实例构造方法init()用于初始化对象的实例资源仅在创建对象new/ 反射等时执行与类加载流程无关类初始化阶段由「主动使用」触发核心任务是执行clinit()保证类的静态资源完成初始化。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

枣庄网站设计长沙营销推广公司

计算机专业 CTF 比赛全攻略:从新手参赛到实战拿分,附工具 赛事清单 作为计算机专业学生,CTF 比赛绝对是提升实战能力、丰富简历的硬核渠道。它不像纯理论学习那样枯燥,而是以解题夺旗的形式,把 Web 渗透、密码学、逆向…

张小明 2026/1/8 3:38:43 网站建设

学点啥网站哪个网站做宣传比较好

第一章:农业传感器 PHP 数据的可视化在现代农业系统中,传感器持续采集土壤湿度、环境温度和光照强度等关键数据。这些数据通常通过嵌入式设备上传至服务器,并以PHP脚本进行接收与处理。为了便于农技人员直观掌握农田状态,将采集到…

张小明 2026/1/7 0:49:17 网站建设

网站设计一般多少钱做推广网站的去哪能买到有效资料

一、系统设计目标与需求分析 在安防、家居、工业监测等场景中,单一功能报警系统已无法满足多维度安全需求。基于单片机的多功能报警系统,核心目标是整合多类型风险监测与灵活报警响应,解决传统报警设备功能单一、误报率高、联动性差的问题。从…

张小明 2026/1/7 2:05:04 网站建设

平远网站建设网站建设 模板

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言 提示:这里可以添加本文要记录的大概内容: 例如:随着…

张小明 2026/1/7 2:14:41 网站建设

无锡网站排名哪里有商户 wordpress

MCP服务器故障排除实战手册:5分钟紧急修复与深度优化 【免费下载链接】servers Model Context Protocol Servers 项目地址: https://gitcode.com/GitHub_Trending/se/servers 面对MCP服务器突发的服务中断和性能瓶颈,技术团队需要一套快速响应的故…

张小明 2026/1/7 2:18:01 网站建设

沈阳网站开发招聘东莞市路桥公司

还在为《泰坦之旅》中背包爆满而烦恼吗?每当你击败强大的敌人,却发现珍贵的战利品无处安放,那种遗憾感是否让你夜不能寐?传统仓库的限制如同无形的枷锁,束缚着你的冒险热情。现在,TQVaultAE以其革命性的设计…

张小明 2026/1/7 4:07:35 网站建设