class文件结构
文章目录
- 1. 常量池集合
- 2. 访问标志
- 3. 字段表集合
- 4. 方法表集合
- 5. 属性表集合
成员变量(非静态)的赋值过程:1. 默认初始化 2. 显示初始化/代码块中初始化 3. 构造器中初始化 4. 有了对象后对象。属性或者对象。方法的方式对成员变量进行赋值
属性没有多态、方法才有多态

1. 常量池集合
用于存放编译时期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。
字面量:字符串、声明为 final 的常量值
(常量值就是八种基本数据类型)
符号引用:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符
口述:比如说我们定义了一个类,在类中定义了一些属性和方法,那有关这个类、属性、方法在常量池中都可以找到,像类的全限定名啊、方法返回值啊参数啊方法所属的类啊、属性所属的类啊属性名字啊都在常量池中的。像我们用jclasslab解析class文件也都可以看到这些结构的。
补充说明:
虚拟机在加载 Class 文件时才会进行动态链接
,也就是说,Class 文件中不会保存各个方法和字段的最终内存布局信息
。因此,这些字段和方法的符号引用不经过转换是无法直接被虚拟机
使用的。当虚拟机运行时,需要从常量池中获得对应的符号引用,再在类加载过程中的解析阶段
将其替换为直接引用
,并翻译到具体的内存地址
中。
2. 访问标志
这个 Class 是类还是接口;是否定义为 public 类型;是否定义为 abstract 类型
3. 字段表集合
口述:记录了我们在类中声明的属性的信息,包括属性名字、访问权限啊、是否是static修饰啊、是否是final修饰啊这些描述属性的信息。
用于描述接口或类中声明的变量。包括类变量
以及实例变量
,但是不包括方法内部
、代码块内部
声明的局部变量
。
4. 方法表集合
口述:方法表集合描述了我们定义在类中的所有方法的描述信息,包括方法名字、访问修饰符、方法的返回值类型啊方法的参数信息啊,以及方法内部的属性的信息啊等等。
- 每一个
method_info
项都对应着一个类或者接口中的方法信息。比如方法的访问修饰符
(public、private 或 protected),方法的返回值类型
以及方法的参数信息
等。 - 如果这个方法不是抽象的或者不是 native 的,那么字节码中会体现出来。
- methods 表
只描述当前类或接口中声明的方法
,不包括
从父类或父接口继承的方法。但methods 有可能会出现由编译器自动添加的方法,最典型的便是编译器产生的方法信息(比如:类(接口)初始化方法
<clinit>()和实例初始化方法
<init>()
5. 属性表集合
比如说 Code 属性就存放了方法里面的具体的代码, LineNumberTable 属性描述了我们写的代码和字节码指令的这种对应关系, LocalVariableTable 属性描述了局部变量的信息。
相关文章:

class文件结构
文章目录 1. 常量池集合2. 访问标志3. 字段表集合4. 方法表集合5. 属性表集合 成员变量(非静态)的赋值过程:1. 默认初始化 2. 显示初始化/代码块中初始化 3. 构造器中初始化 4. 有了对象后对象。属性或者对象。方法的方式对成员变量进行赋值 …...
多重背包问题 一句话说清楚“二进制拆分“
目录 区别: 一句话说清楚: 板子: 区别: 得先懂完全背包问题完全背包问题 非零基础-CSDN博客 都是让背包内价值最大。 完全背包问题每种物品可以取无数次。而多重背包问题每件取的次数有限。 都可以用的最挫的方法就是0~k件去…...

nodejs微信小程序+python+PHP本科生优秀作业交流网站的设计与实现-计算机毕业设计推荐
通过软件的需求分析已经获得了系统的基本功能需求,根据需求,将本科生优秀作业交流网站功能模块主要分为管理员模块。管理员添加系统首页、个人中心、用户管理、作业分类管理、作业分享管理、论坛交流、投诉举报、系统管理等操作。 随着信息化社会的形成…...

使用git出现的问题
保证 首先保证自己的git已经下载 其次保证自己的gitee账号已经安装并且已经生成ssh公钥 保证自己要push的代码在要上传的文件夹内并且配置文件等都在父文件夹(也就是文件没有套着文件) 问题 1 $ git push origin master gitgitee.com: Permission de…...
rk3568 适配PCIE(二)
rk3568 适配pcie3.0 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机主板和其他设备的高速串行总线接口。PCIe 2.0和PCIe 3.0是两个不同版本的PCIe规范,它们在以下几个方面有所不同: 带宽:PCIe 2.0的理论带宽为每条通道5 Gbps,而PCIe 3.0的理论带…...
Java基础 进制
在Java中,可以使用不同的进制表示整数常量和字面量。 十进制(Decimal):默认为十进制,不需要添加前缀。例如:int num 10;二进制(Binary):以0b或0B作为前缀表示二进制。例…...
springboot中@Builder注解的详细用法实例,跟数据库结合。
在Spring Boot中,Builder注解是Lombok库提供的一个注解,用于生成带有Builder模式支持的构造器方法。通过Builder注解,可以简化对象的创建过程,特别适用于需要设置多个属性的情况。 下面是一个使用Builder注解的示例: …...
WT2605C蓝牙音频语音芯片:具备大功率IO驱动能力,引领音频技术新纪元
在当今的电子科技时代,功率强大的IO驱动能力成为音频设备性能的重要指标。近日,一款名为WT2605C的蓝牙音频语音芯片,以其最高可直接驱动64mA的大功率IO驱动能力,引起业界的广泛关注。这款芯片的出现,无疑将为音频设备的…...
【Java 基础】20 多线程操作方法
文章目录 1.获取和设置线程的名字1)获取默认名字2)获取自定义的名字 2.判断线程是否启动3.线程的强制执行4.让线程睡一会儿5.中断线程6.守护线程7.线程的礼让 前一节我们介绍了线程的定义、创建方法、状态以及各状态间的转换。在状态转换处只是简单的说明…...
SpringBoot使用mybatis-plus分页查询无效解决方案
问题概述 SpringBoot中使用mybatis-plus实现分页查询时,提供一个page分页对象和一个QueryWrapper条件类对象,在使用Service.page(page,queryWrapper)方法进行分页查询时,发现并未查询到分页的结果,反而是查询到全部符合条件的结果…...
QT 中 线程池 (备查)
QRunnable类 API 1)在Qt中使用线程池需要先创建任务,添加到线程池中的每一个任务都需要是一个 QRunnable 类型,因此在程序中需要创建子类继承 QRunnable 这个类。 2)然后重写 run() 方法,在这个函数中编写要在线程池中…...
LeetCode刷题笔记第71题:简化路径
LeetCode刷题笔记第71题:简化路径 题目 给定一个路径,简化路径 要求: 1、以’/‘开头 2、两个目录之间只有一个’/’ 3、不能以’/‘结尾 4、路径中不能有’.‘和’…’ 想法 利用栈的数据存储方式的思想,将路径字符顺序入栈遇…...

JavaScript <md5加密的两种不同输出结果分析>--案例(二点一)
前言: 问题是这样的,在浏览器中看到这段代码 然后在控制台进行输出.得到: 紧接着,就在,js文件里面进行转译: 可是,得到的结果是: 这是问题!!! 正题: 为什么相同的js代码,在 .js 文件中的输出与 Chrome 控制台中的输出不一样? 环境差异:不同的JavaScript环境&…...

『亚马逊云科技产品测评』活动征文|基于亚马逊EC2云服务器配置Nginx静态网页
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器(Elastic Compute Cloud)是亚马…...

28、卷积 - 卷积的基础公式
本节推导一下卷积的基础公式,还是先上一张卷积运算的示意图图。 我们知道,一张图片有 3 个维度,分别是长、宽、通道。 这三个维度分别用 3 个字母代替,分别是 H(Height, 对应的是长这一维度), W(Width, 对应的是宽这一维度),C(Channel,对应的是通道这一维度)。 对于…...

Mac电脑vm虚拟机 VMware Fusion Pro中文 for mac
VMware Fusion Pro是一款功能强大的虚拟机软件,适用于需要在Mac电脑上运行其他操作系统的用户。它具有广泛的支持、快速稳定的特点以及多种高级功能,可以满足用户的各种需求和场景。 多操作系统支持:VMware Fusion Pro允许在Mac电脑上运行多…...

区块链技术的应用场景和优势
目录 一、引言 二、什么是区块链技术 三、区块链技术的应用场景 1.金融领域 (1)支付和清算:区块链可以为支付和金融结算提供更加快速、安全、便捷的方式。例如瑞士银行UBS和Deutsche Bank已经合作开发了基于区块链的支付和清算系统。 &a…...
java面试题-谈谈sql优化-mysql
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 这是面试总结出来的几点,每次问道都是这么回…...

【Linux服务器Java环境搭建】07 在linux中安装MySql,以及对MySQL的配置与远程连接
【Linux服务器Java环境搭建】01购买云服务器以及在服务器中安装Linux系统 【Linux服务器Java环境搭建】02 通过xftp和xshell远程连接云服务器 【Linux服务器Java环境搭建】03 Git工具安装 【Linux服务器Java环境搭建】04 JDK安装(JAVA环境安装) 【Linux服…...

用 LangChain 搭建基于 Notion 文档的 RAG 应用
如何通过语言模型查询 Notion 文档?LangChain 和 Milvus 缺一不可。 在整个过程中,我们会将 LangChain 作为框架,Milvus 作为相似性搜索引擎,用二者搭建一个基本的检索增强生成(RAG)应用。在之前的文章中&a…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...