类立即初始化的场景
类立即初始化
- new关键字
- 调用和设置静态域中的内容
- 子类执行时父类没有初始化
- 通过反射进行进行反射调用
- 用户指定一个主类(main()方法所在类)
- jdk1.8之后允许接口有一个默认(default)方法
被动引用的例子 - 子类引用父类静态域的内容,不会导致子类完成初始化
class SuperClass { static{ System.out.println("SuperClass Init!"); } public static int value = 123; } class SubClass extends SuperClass{ static{ System.out.println("SubClass Init"); } } // 非主动使用类字段演示 public class TestMain{ public static void main(String [] args){ System.out.println(SubClass.value); } } //SuperClass Init! //123
被动引用的例子 - 常量在编译阶段即存储方法区的常量池中,本质上没有触及到定义常量的类即不会触发定义常量所在类的初始化
public class TestInitialization { public static void main(String[] args) { Test02.getInfo(); } } class Test01{ static{ System.out.println("Test01 - Initialized!"); } public static final String info = "we are the world"; } class Test02{ static{ System.out.println("Test02 - Initialized!"); } public static void getInfo(){ System.out.println(Test01.info); } } /* Test02 - Initialized! we are the world */
学而不思则罔,思而不学则殆!
分类:
JVM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具