原来你长这个样子啊,Java字节码文件

news2024/11/24 19:09:39

字节码文件

  • 字节码文件是一种二进制文件,扩展名为.class

  • 通过 javac 将源码编译得到,是一种中间形式的代码,这种中间形式的代码让Java有了“一次编译,多次运行”的跨平台特点。

字节码文件的组成

由5大组成部分:基础信息、常量池、字段、方法、属性

  1. 基础信息

    • 魔数、字节码文件对应的Java版本号访问标识(public、final等)父类和接口

      image-20240513204946484

  2. 常量池

    • 保存了字符串常量、类或接口名、字段名主要在字节码指令中使用

      image-20240513204921345

  3. 字段

    • 当前类或接口声明的字段信息

      image-20240513205030925

  4. 方法

    • 当前类或接口声明的方法信息字节码指令

      image-20240513205143372

  5. 属性

    • 类的属性,比如源码的文件名内部类的列表等

      image-20240513205227327

基础信息

  • 文件是无法通过文件扩展名来确定文件类型的,文件扩展名可以随意修改,不影响文件内容

  • 软件使用文件的头几个字节(文件头)来校验文件的类型,如果软件不支持这种类型就会出错

魔数

Java字节码文件中,将文件头称为magic魔数

主副版本号
  • 主副版本号指的是编译字节码文件的JDK版本号。

  • 主要作用:判断当前字节码文件的版本和运行时的JDK版本是否兼容

常量池

作用:避免相同内存重复定义,节省空间。

  • 常量池中每个数据都有一个编号,从1开始,在字段/字节码中可以通过编号快速查到该数据

  • 符号引用过程:字节码指令中通过编号引用到常量池

方法

当前类或接口正在执行的方法。

里面的部分有:

  • 操作数栈:用来存放临时数据的地方(也有可能在里面进行计算)

  • 局部变量表:存放方法中局部变量的地方

举例:

int i =0;
int j = i+1;

上述代码执行过程:

  1. iconst_0:将0存放到操作数栈中

  2. istore_1:将操作数栈中的0 移到局部变量表中1的位置

  3. iload_1:加载局部变量表中1下标处的数据到操作数栈中

  4. iconst_1:将1添加到操作数栈中

  5. iadd:将操作数栈中的0 和 1进行相加,并达到1

  6. istore_2:将操作数栈中的元素移到局部变量表中2的位置

  7. return:方法返回

image-20240513212016935


下面是一个代码,请尝试自己来理解一下吧:

int i = 0;
i = i++;

image-20240513212200110

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SQLAlChemy】如何连接数据库?

使用SQLAlChemy连接数据库 导入包 首先,导入创建数据库引擎的包。 from sqlalchemy import create_engine编写数据库配置 SQLALCHEMY_DATABASE_URL "mysql://root:123456789127.0.0.1:3306/tortoise"字段解释: mysql::这是数…

Python第二语言(七、Python模块)

目录 1. 什么是模块 2. 基本语法 2.1 模块的导入方式 2.2 基本语法 import 模块名 2.3 基本语法 from 模块名 import 功能名 2.4 基本语法as 别名 3. 自定义模块 4. 调用自定义模块时,如何让其模块中的函数不被调用(__name__) 5. 调…

fl studio怎么设置中文及 2024年最新fl studio选购指南

FL Studio让你的计算机就像是全功能的录音室,漂亮的大混音盘,先进的创作工具,让你的音乐突破想象力的限制。zol提供FL Studio中文版下载。 FL Studio中文版下载软件简介 FL Studio 让你的计算机就像是全功能的录音室,漂亮的大混…

Linux的网络配置

查看网络配置命令 一、查看所有活动的网络接口信息 ifconfig ifconfig 展示的是当前设备正在工作的网卡(启动的设备) ifconfig -a 展示所有的网络设备 ifconfig ens33 查看指定网卡设备 ifconfig ens33 down 关闭网卡 或者 ifdown ens33 &#xff0…

论文阅读KAN: Kolmogorov–Arnold Networks

学习了最近大热的KAN网络 论文地址:https://arxiv.org/pdf/2404.19756 按我个人读论文的习惯总结了如下几点: 1,背景: 1)灵感来源:于Kolmogorov-Arnold表示定理,也就是多变量连续函数可以表…

大模型常用推理参数工作原理

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 do_sample do_sample 参数控制是否使用采样…

戴尔R720服务器(3)组RAID

今天收到7块硬盘,现在共有8块硬盘了,找了个视频学习了怎么使用阵列卡组RAID并记录。 ​​ ‍ 视频参考:【戴尔服务器添加RAID5热备盘hotspare】 ‍ 阵列卡组RAID5 开始 连接iDRAC控制台服务器开机按F2进入BIOS选择Device Settings​ ​​…

知识图谱的应用---智能电网

文章目录 智能电网典型应用 智能电网 智能电网以物理电网为基础,将现代先进的传感测量技术、通讯技术、信息技术、计算机技术和控制技术与物理电网高度集成而形成的新型电网。它以充分满足用户对电力的需求和优化资源配置、确保电力供应的安全性、可靠性和经济性、满…

C++输入输出与IO流

C 输入输出与I/O流 文章目录 C 输入输出与I/O流IO类型与基础特性概念与特性IO状态输出缓冲区 文件输入输出文件模式 string流IO处理中常用的函数及操作符综合练习与demo一、 创建文件并写入二、控制台输入数据并拆分存储三、读写电话簿 IO类型与基础特性 C11标准提供了几种IO处…

【ArcGIS微课1000例】0117:ArcGIS中如何将kml(kmz)文件转json(geojson)?

文章目录 一、kml获取方式二、kml转图层三、图层转json一、kml获取方式 kml文件是一种很常用的数据格式,可以从谷歌地球(googleearth)获取某一个地区的kml范围文件,如青海湖(做好的kml文件可以从配套实验数据包0117.rar中获取)。 二、kml转图层 打开【KML转图层】工具,…

前端项目打包、部署的基础 (vue)

详细请看B站视频 BV19n4y1d7Gr 《禹神:前端项目部署指南,前端项目打包上线》,本博客为自用视频笔记。 目录 项目打包vue打包打包前分析项目请求 本地服务器部署问题 & 解决问题1:刷新页面404问题问题2:ajax请求废…

最新下载:PDFFactoryFinePrint【软件附加安装教程】

简介: pdfFactory是一款无须 Acrobat 创建 Adobe pdf 文件的打印机驱动程序, 提供的创建 PDF 文件的方法比其他方法更方便和高效。 pdfFactory 支持从所有应用程序轻松、可靠地创建 PDF 文件。 支持将单页或两页的文档,直接打印为PDF文件&a…

信息学奥赛初赛天天练-24-二叉树、N叉树遍历技巧与前缀表达式、中缀表达式、后缀表达式应用实战演练

PDF文档公众号回复关键字:20240609 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 5 根节点的高度为1,一根拥有2023个节点的三叉树高度至少为( )。 A 6 B 7 C 8 D 9 8 后缀表达式 6 2 3 + - 3 8 2 / + * 2 ^ 3 + 对应的中缀表达式是( ) A ((…

[Linux]内网穿透nps

文章目录 基础文件下载项目地址下载地址 客户端安装解压文件客户端启动客户端注册到linux系统服务客户端注册到windows系统服务windows bat 一键管理员注册windows bat 一键管理员取消 基础文件下载 项目地址 https://github.com/ehang-io/nps 下载地址 Releases ehang-io…

12.打渔还是晒网

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/17 题目描述 有句俗话叫“三天打渔,两天…

VBA高级应用30例应用2实现在列表框内及列表框间实现数据拖动

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…

AI大模型学习(非常详细)零基础入门到精通,收藏这一篇就够了

前言 随着人工智能技术的快速发展,AI大模型学习正成为一项备受关注的研究领域。为了提高模型的准确性和效率,研究者们需要具备深厚的数学基础和编程能力,并对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法,AI大模…

【西瓜书】9.聚类

聚类任务是无监督学习的一种用于分类等其他任务的前驱过程,作为数据清洗,基于聚类结果训练分类模型 1.聚类性能度量(有效性指标) 分类任务的性能度量有错误率、精度、准确率P、召回率R、F1度量(P-R的调和平均)、TPR、FPR、AUC回归…

关系数据库标准查询语言-SQL-SQL语言概述

一、SQL(Structured Query Language)语言 1、是高度非过程化的语言 2、关系数据库管理系统(RDBMS)都支持SQL标准 3、具有定义、查询、更新、控制四大功能 4、数据库对象由数据库(Database)、基本表(Table)、视图(V…

Spark参数配置不合理的情况

1.1 内存设置 💾 常见的内存设置有两类:堆内和堆外 💡 我们作业中大量的设置 driver 和 executor 的堆外内存为 4g,造成资源浪费 📉。 通常 executor 堆外内存在 executor.cores1 的时候,1g 足够了&…