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

张小明 2025/12/31 4:56:36
网站建设优化服务器,深圳网站建设公司是,网站建设 豫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进行投诉反馈,一经查实,立即删除!

点网站建设朝阳百姓网

在Oracle数据库中,获取字符串的前五个字符可以通过使用SUBSTR函数来实现。SUBSTR函数允许从字符串中提取一个子字符串,其语法如下: SUBSTR(string, start_position, length)string 是你想要从中提取子字符串的原始字符串。start_position 是你…

张小明 2025/12/26 7:36:00 网站建设

网站用什么格式做建设网站得多少钱

Vile编辑器:功能特性与使用指南 1. 可视化模式(Visual Mode) Vile在高亮待操作文本的方式上与Elvis和Vim有所不同,它使用“引用动作”命令 q 。操作步骤如下: 1. 在要操作区域的起始位置输入 q 。 2. 使用其他vi动作移动光标到区域的另一端。 3. 再次输入 q 结…

张小明 2025/12/26 7:45:46 网站建设

扁平化设计 网站金色金融公司网站源码

一、SysLink Control 控件概述 SysLink Control 是 MFC 中用于在应用程序中嵌入超链接的控件,它支持标准的 HTML 锚定标记(<a>),可以创建类似网页中的超链接效果。该控件支持多个超链接,每个链接可以通过从 0 开始的索引进行访问,支持 http、ftp、mailto 等多种协…

张小明 2025/12/27 22:47:14 网站建设

seo的培训网站哪里好公众号做微网站

还在为地址选择器的数据来源发愁吗&#xff1f;&#x1f914; 每次开发电商平台、物流系统或用户注册页面时&#xff0c;最让人头疼的就是如何获取准确、完整的中国行政区划数据。从省级到村级&#xff0c;五级联动数据的收集和维护工作量巨大&#xff0c;现在终于有了完美的解…

张小明 2025/12/26 10:36:13 网站建设

网站图标ico 需要多大seo优化关键词挖掘

AUTOSAR网络唤醒机制&#xff1a;从NM报文配置到系统级协同的实战解析你有没有遇到过这样的场景&#xff1f;车辆熄火后&#xff0c;某个ECU迟迟无法进入睡眠——总线电流始终降不下去&#xff1b;或者钥匙一拧&#xff0c;空调控制器响应迟钝&#xff0c;仿佛“还没睡醒”。这…

张小明 2025/12/26 11:11:29 网站建设

网站备案承诺书网易企业邮箱修改密码

RTranslator性能优化全攻略&#xff1a;从卡顿诊断到流畅体验的技术解决方案 【免费下载链接】RTranslator RTranslator 是世界上第一个开源的实时翻译应用程序。 项目地址: https://gitcode.com/GitHub_Trending/rt/RTranslator 在AI翻译应用日益普及的今天&#xff0c…

张小明 2025/12/26 11:13:55 网站建设