JVM笔记八:类的主动使用和被动使用

深入理解JVM虚拟机第十篇:两个Class对象是否来源于一个类文件的标准以及类的主动使用与被动使用 本文是深入理解JVM虚拟机系列文章中的第十篇,主要介绍了如何判断两个Class对象是否来源于一个类文件的标准,以及详细介绍什么是类的主动使用与被动使用 阅读详情

JVM中表示两个class对象是否为同一个类存在两个必要条件:
1.类的完整类名必须一致,包括包名。
2.加载这个类的ClassLoader (指ClassLoader实例对象)必须相同。
(换句话说,在JVM中,即使这两个类对象(class对象)来源同一个Class文件,被同一个虚拟机所加载,但只要加载它们的ClassLoader实例对象不同,那么这两个类对象也是不相等的。)

Java程序对类的使用方式分为:主动使用和被动使用。

主动使用,又分为七种情况: .
1.创建类的实例
2.访问某个类或接口的静态变量,或者对该静态变量赋值
3.调用类的静态方法
4.反射(比如: Class. forName (“com. atguigu. Test”) )
5.初始化一个类的子类
6.Java虛拟机启动时被标明为启动类的类
7.JDK 7开始提供的动态语言支持:
java.lang.invoke . MethodHandle实例的解析结果REF_getStatic、 REF_putStatic、 REF_invokeStatic句柄对应的类没有初始化,则初始化

除了以上七种情况,其他使用Java类的方式都被看作是对类的被动使用,都不会导致类的初始化。

海康SDK回调PS流解析实战:从字节流到前端H264播放的完整流程 本文详细介绍了海康SDK回调PS流解析的完整流程,从字节流获取到前端H264播放的实现。涵盖SDK初始化、PS流数据结构解析、H264裸流提取、WebSocket传输及前端播放器集成等关键步骤,为视频监控系统开发提供实用指导。 阅读详情

相关推荐

SoC验证新思路:除了UVM仿真,你还可以试试Cadence JasperGold的形式化验证

本文深入探讨了Cadence JasperGold形式化验证在SoC设计中的创新应用,对比传统UVM仿真验证,详细解析了其数学穷尽性验证优势。通过实战案例展示了JasperGold在总线协议、时钟域交叉等关键场景的验证方法,并提供了混合验证流程设计与效能优化方案,帮助工程师提升验证效率30%以上。

weixin_30566063的博客 120

JVM系列——java中类的主动使用与被动使用

java程序对类的使用方式分为主动使用和被动使用: 主动使用: 1. 创建类的实例; 2. 访问某个类或接口的静态变量,或者对该静态变量赋值; 3. 调用类的静态方法; 4. 反射:比如:Class.forName("com.hahaha.Test") 5. 初始化一个类的子类; 6. java虚拟机启动时被表明为启动类的类; 7. JDK7开始提供的动态语言支持: java.lang.invoke.MethodHandle实例的解析结果 REF_getStatic、REF_putStat

m0_51660523的博客 667

嵌入式设备电量显示实战:MCP3421 ADC采集从原理到代码全解析(附避坑指南)

本文详细解析了嵌入式设备中MCP3421 ADC芯片在电量显示应用中的硬件设计、寄存器配置、I2C通信调试及低功耗优化策略。通过实战代码和避坑指南,帮助开发者实现高精度电量监测,特别针对I2C时序和分压电路设计等常见问题提供解决方案,适用于物联网终端和移动设备开发。

weixin_42525632的博客 386

Java类的主动使用和被动使用

Java对类的使用包括主动使用和被动使用。 其中被动使用不会初始化类,但有可能会加载类,并且在加载的过程中,如果遇到了class文件的缺失,或者是找不到class文件类加载器只会在首次主动使用它们的时候才会报错,如果一直都没有主动使用则不会报错。 主动使用的情况分为6种。 1.New,直接使用。 2访问某个类或接口的静态变量。 3调用静态方法。 4反射某个类。 5初始化一个子类。 被动使用的情况分为三种。 1通过子类调用父类的静态方法,子类不会被初始化。 2构造一个该类的数组,该类不会被初始化。 3引用类中

qq_28987841的博客 260

Ansys Lumerical | 薄膜铌酸锂电光调制器的仿真与优化

本文详细介绍了使用Ansys Lumerical进行薄膜铌酸锂电光调制器仿真与优化的全流程。从基础原理到电学仿真、光学模拟技巧,再到设计优化实战经验,帮助工程师掌握这一先进光电器件的仿真方法。重点解析了薄膜铌酸锂的Pockels效应和Mach-Zehnder结构设计,并提供了常见问题排查指南和最新发展动态。

vulkan6gpu的博客 1196

Python实战:从中国气象局天擎平台自动化获取与处理雷达基数据

本文详细介绍了如何利用Python脚本实现从中国气象局天擎平台自动化获取与处理雷达基数据。通过环境搭建、安全认证、核心代码编写及工程化优化,构建了一个包含自动查询、批量下载、错误重试和格式转换的完整数据管道,旨在帮助气象水文领域的研究者与数据分析师从繁琐的手动操作中解放出来,高效管理海量数据。

ipfs8storage的博客 919

java类的主动使用/被动使用

对类的使用方式分为:主动使用、被动使用所有的java虚拟机实现必须在每个类或接口被java程序“首次主动使用”时才初始化他们ps:被动使用不会初始化类,但是有可能会加载类(JVM规范里没有说明)并且,如果在加载的过程中,遇到了.class文件的缺失或者存在错误,类加载器只会在首次主动使用它们时才会报错,如果一直没有主动使用,则不会报错主动使用:创建类的实例、访问某个类或者接口的非final类型的静...

mweibiao的博客 2861

HFSS求解器背后的数学原理:从麦克斯韦方程到S参数计算

本文深入解析了Ansys HFSS求解器的数学原理,从麦克斯韦方程出发,详细介绍了模式驱动求解(Driven Solution)和本征模求解(Eigenmode)等核心算法。通过有限元方法和模式匹配技术,HFSS将电磁场问题转化为矩阵方程求解,实现S参数计算和场分布分析,为工程师提供精确的电磁仿真工具。

weixin_28314575的博客 464

Java之类的主动使用和被动使用

开心一笑「把你最值钱的东西交出来!」面对劫匪的恐吓,男友二话不说,把我给推了出去。一时间我竟不知应该感动还是生气。提出问题Java类的主动使用和被动使用分别是那些情况???解决问题Java类主动使用情况,会导致类的初始化: 1)创建类的实例 2)访问某个类或接口的静态变量,或者对该静态变量赋值 3)调用类的静态方法 4)反射(如Class.forName(“com.bunny.Test”))

IT技术分享 1582

Linux系统杀毒软件深度评测:8款主流工具对比(2025最新版)

本文针对Linux服务器/桌面环境,实测8款杀毒软件,涵盖开源免费、企业级防护、轻量级工具等类型,附保姆级安装教程和避坑指南,新手也能5分钟选对工具!

awei0916的专栏 1万+

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

1589

Java 类的主动使用和被动使用

JVM规定,每个类或者接口被首次主动使用时才对齐进行初始化,有主动使用,自然就有被动使用,那么这两个使用 到底是什么呢,这里简述一下. 主动使用: 1:通过new关键字被导致类的初始化,这是大家经常使用的初始化一个类的方式,他肯定会导致类的加载并且初始化 2:访问类的静态变量,包括读取和更新 3:访问类的静态方法 4:对某个类进行反射操作,会导致类的初始化 5:初始化子类会导致父类的...

阿瞒的博客 757

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JVM_类的加载、链接、初始化、卸载、主动使用、被动使用

JVM_类的加载、链接、初始化、卸载、主动使用、被动使用

m0_74969835的博客 1730

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JVM之类的加载过程中的主动使用 和 被动使用

1、主动使用 与 被动使用 的定义 主动使用 的7种情况: 创建类的实例对象,如 new Person(): 访问类 (包括接口、抽像类)的静态变量,或者对静态变量赋值; 调用类的静态方法; 使用 反射 Class.forName("com.test.Test") ,对类进行反射调用的时,如果类没进行初始化,需要先调用其初始化方法进行初始化。 当初始化一个类时,如果其父类还未进行初始化,会先触发...

猎人在吃肉 950

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JVM-4——类的主动被动使用

类的使用 在JVM中表示两个class对象是否为同一个类存在两个必要条件: 类的完整类名必须一致,包括包名 加载这个类的ClassLoader(指ClassLoader实例对象)必须相同 换句话说,在JVM中,即使这两个类对象来源于同一个class文件,被同一个虚拟机所加载,但只要加载他们的ClassLoader实例对象不同,那么这两个类对象也是不相等的。 对类加载器的引用 JVM必须知道一个类型是由启动加载器加载的还是由用户类加载器加载的。如果一个类型是由用户类加载器加载的,那么JVM会将这个类加

phg739436146的博客 440

JVM 实战 - 类的主动使用和被动使用

类的主动使用和被动使用之间的主要区别在于是否执行类的初始化过程。主动使用会导致类的初始化,而被动使用则只会加载类但不会执行初始化。了解这些概念可以帮助你在开发过程中更有效地管理和优化 Java 应用程序的性能。如果你需要更深入地了解类的加载过程或者有其他相关的问题,请随时提问。

qq_33240556的博客 617

JVM15_类的加载、链接、初始化、卸载、主动使用、被动使用

文章目录①. 说说类加载分几步?②. 什么是类的加载(Loading)③. 链接(Linking)④. 初始化(Initialization)②. 类加载器的介绍①. 启动类加载器②. 扩展类加载器(Extension ClassLoader)③. 应用程序类加载器(系统类加载器)④. 用户自定义类加载器(了解)⑤. 双亲委派机制 (掌握)⑥. 沙箱安全机制 (掌握)⑦. 如何判断两个Class对象是否相同⑧. 主动使用和被动使用 ①. 说说类加载分几步? ①. 按照Java虚拟机规范,从class文件

所得皆惊喜 3935

9.如何判断两个Class对象是否相等?类加载器的引用,类的主动使用和被动使用

1.两个class对象是否相等的条件 1.类的完整类名必须一致,包括包名。 2.加载这个类的ClassLoader(指的是ClassLoader实例对象)必须相同。 换句话说,在JVM中,即使两个类对象(Class对象)来源于同一个Class文件,被同一个虚拟机加载,但是只要加载它们的ClassLoader实例对象不同,那么这两个Class对象就不相等。 2.类加载器的引用的保存 JVM必须知道一个类是由启动类加载器加载还是由用户类加载器加载(除了启动类加载器之外的加载器)。如果一个类是由用户类加载器加载

simpleGq的专栏 3507

JVM(二)类的主动使用与被动使用

对类的使用方式 主动使用 被动使用 所有Java虚拟机实现必须在每个类或接口被Java程序首次主动使用时才初始化 主动使用才进行初始化 第一次主动使用才进行初始化,之后就不再初始化 只有当程序访问的静态变量或静态方法确实在当前类或当前接口中定义时,才可认为是对类或接口的主动使用 主动使用 创建类的实例 new Object() 访问某个类或接口的静态变量,或者对该静...

r09er的博客 362

java类的主动运用和被动引用

目录 一、jvm类的加载机制 1、加载 2、链接 3、类的初始化 4、主动引用 1 new一个对象 3、反射 4、子类初始化前会先初始化父类 5、包含main方法的类,虚拟机启动时会先初始化该类 5、被动引用 1、当访问一个静态域时,只有真正声明该静态域的类才会被初始化,例如通过子类引用父类的静态变量,并不会导致子类初始化 2、通过数组定义类引用,不会触发此类的初始化 3、引用常量不会触发此类的初始化(因为常量在编译的时候就被存入到类的常量池中了) 一、jvm类的加...

qq_38345598的博客 558

【jvm】类的主动使用和被动使用

7.jdk7开始提供的动态语言支持:java.lang.invoke.MethodHandle实例的解析结果REF_getStatic、REF_putStatic、REF_invokeStatic句柄对应的类没有初始化,则初始化。4.反射(例如Class.forName(“com.learning.Test”))1.其它使用java类的方式都看作是对类的被动使用,不会导致类的初始化。2.访问某个类或接口的静态变量,或者对该静态变量赋值。6.java虚拟机启动时被标明为启动类的类。5.初始化一个类的子类。

王佑辉的博客 952

深入理解JVM(12)——类加载(2)——类的主动使用和被动使用

目录 1.Java对类的主动使用和被动使用 1.1 主动使用(七种) (1)上述主动使用规则的典型举例 (2)主动使用与final (3)初始化时类与接口的区别 1.2 被动使用 2.Java虚拟机与程序的生命周期 3.数组创建本质分析 4.类加载的准备阶段和初始化阶段的重要意义 1.Java对类的主动使用和被动使用 所有Java虚拟机实现必须在每个类或接口被Java程序“首...

波波鱼的博客 793

jvm-类的主动使用

所有的java虚拟机实现,必须在每个类或接口被java程序“首次主动使用”时才初始化他们 (这句话翻译一下就是:在jvm中,类和接口被“首次主动使用”时,才进行初始化操作) 类分为主动加载,被动加载,是一个排斥的关系,非此即彼的关系 类的主动加载包括以下几种场景,该类命名为C,其他场景都是被动使用 1,创建类C对象 创建对象是最基本的主动使用,创建对象前,一定将类进行初始化 2,类C的静态变量的获取,赋值操作 对该类的内部静态属性进行操作,操作前要初始化 3,类C的静态方...

oJieSi的专栏 1369

最完整JVM类加载时机:主动引用与被动引用深度解析

> 你是否曾经遇到过类初始化时机难以把握的问题?是否对JVM何时加载类、何时初始化类感到困惑?本文将为你彻底解析JVM类加载的时机机制,通过丰富的代码示例和流程图,让你全面掌握主动引用与被动引用的核心原理。 ## 类生命周期全景图 在深入探讨类加载时机之前,让我们先通过一个完整的流程图来理解类的整个生命周期: ```mermaid flowchart TD A[类加载生命周期] --...

gitblog_00902的博客 1010

Java 类加载的过程 类的主动引用和被动引用

类加载的过程   JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的Java类型的过程。字节码的本质上可以理解为一个字节数组。大体上类的加载过程可以分为三步:加载,链接,初始化。 1. 加载: 将class文件字节码内容加截到内存中.并将这些静态数据转换成方法区中的运行时数据结构.在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口,这个过程需要类加就器参与。 2. 链接:   将Java类的二进制代码合并到JVM的运行状态

覃会程的博客 946

四、类的主动使用与被动使用等

类的主动使用与被动使用

a328062954的博客 630
上一篇: JVM笔记七:双亲委派机制和沙箱安全机制
下一篇: JVM笔记九:运行时数据区简介
代码匪徒
博客等级 码龄7年 212粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值