Class类文件中的“咖啡宝贝”

news2024/11/17 9:36:37

Class文件是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。

字节码(Byte Code)是Java构成平台无关性的基石【Class文件格式所具备的平台中立(不依赖于特定硬件及操作系统)、紧凑、稳定和可扩展的特点,是Java技术体系实现平台无关、语言无关两项特性的重要支柱。】

Class文件和字节码文件是一回事!

什么是字节码文件呢?

字节码文件就是Java源代码经过编译器(javac)编译之后生成的新的文件,也就是一个后缀为.class的文件,此文件是一种二进制的类文件,它的内容是JVM指令,此文件就是字节码文件!

魔数与Class文件的版本

每个Class文件的头4个字节被称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。Class文件的魔数值为0xCAFEBABE(咖啡宝贝)

紧接着魔数的4个字节存储的是Class文件的版本号:第5和第6个字节是次版本号(MinorVersion)第7和第8个字节是主版本号(Major Version)

Java的版本号是从45开始,JDK 1.1之后的每个JDK大版本发布主版本号向上加1(JDK 1.0~1.1使用了45.0~45.3的版本号),高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本的Class文件

查看该类的class文件

public class TestClass {

    private int m = 1;

    public int test() {
        return m + 1;
    }

    public static void main(String[] args) {
        TestClass testClass = new TestClass();
        System.out.println(testClass.test());
    }
}

对应字节码文件(由十六进制编辑器打开)

image-20231023233940470

主版本0x0034,也就是十进制52,对应着JDK 8,该版本号说明这个是可以被JDK 8或以上版本虚拟机执行的Class文件。

Class文件版本号

image-20231023234256484

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

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

相关文章

11、Python -- 列表去重的三种方法

目录 方法1:新列表搜集方法2:利用set集合方法3:使用itertools模块 新列表搜集法 使用set集合去重 使用itertools模块的groupby函数去重 方法1:新列表搜集 (1)创建新列表 (2)遍历源列…

Webpack 基础以及常用插件使用方法

目录 一、前言二、修改打包入/出口配置步骤 三、常用插件使用html-webpack-plugin打包 CSS 代码提取 CSS 代码优化压缩过程打包 less 代码打包图片文件 一、前言 本质上,Webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时…

如何完善文件传输审批流程,降低企业文件安全风险?

在当今高度信息化的时代,数据的价值日益凸显。然而,如果在文件对外传输过程中缺乏必要的审批和留痕记录,可能会带来严重的安全隐患。企业面临巨额的经济损失;其次,企业的品牌形象也受到了严重损害;此外&…

FreeRTOS 任务调度和任务的状态

目录 什么是任务调度? FreeRTOS的任务调度规则是怎样的? 抢占式调度运行过程​编辑 时间片调度运行过程​编辑 任务的状态 任务调度和任务的状态案例分析 什么是任务调度? 调度器就是使用相关的调度算法来决定当前需要执行的哪个任务。…

NotePad格式化SQL语句

NotePad格式化SQL步骤 今日自己在进行导出一些后台执行的SQL语句,但是在NOTEPAD上是未排版的,想想有没有这个插件呢? 1.导入插件 进入后,输入PoorManT-SqlFormatt进行搜索 2.点击格式化SQL 3.执行效果

Constellation 介绍:Chainlink 黑客马拉松

在 2020 年,Chainlink 举办了其第一次线上黑客马拉松。当时,DeFi 作为一个类别刚刚开始蓬勃发展,而 NFT 也只是刚刚起步。这次黑客马拉松吸引了来自 45 个国家的 1,000 多名注册参与者,并收到了来自 70 个项目提交。 从那时起&am…

分库分表-ShardingSphere 4.x(2)

❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…

软考机考 画图

文章目录 绘制 前导图绘制 双代号网络图绘制 双代号时标网络图绘制 七格图绘制 类图绘制 时序图绘制 ER 图ER模型 简介 绘制表格 绘制 前导图 第一步:先画出所有活动,将活动命名 第二步:如需调整大小,选中要调整大小的元件&#…

CSS 快速实现水平垂直居中

CSS 快速实现水平垂直居中 文章目录 CSS 快速实现水平垂直居中一、前言二、弹性布局普遍做法三、弹性布局的妙用参考资料💘推荐博文🍗 一、前言 本文探究的是如何快速实现水平垂直居中,重点在于快速两个字,我对于快速的理解&…

智慧公厕:细致入微的城市贴心服务与便捷方便的生活配套

在现代城市生活中,公厕作为重要的城市基础设施,一直是城市发展的关键环节之一。然而,传统的公厕常常存在着设施陈旧、管理不善和卫生状况差等问题,给市民的生活品质和城市形象带来了一定的影响。为了提供更好的城市公厕服务&#…

Pillow(PIL)库的主要方法介绍

Pillow(Python Imaging Library)是Python中一个强大的图像处理库,它允许你进行图像的创建、打开、编辑、保存和显示等操作。Pillow 是 PIL(Python Imaging Library)的分支,支持多种图像格式,并提…

VLOOKUP函数的使用方法

VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为: VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)下面以一个实例来介绍…

Spring Cloud之微服务

目录 微服务 微服务架构 微服务架构与单体架构 特点 框架 总结 SpringCloud 常用组件 与SpringBoot关系 版本 微服务 微服务:从字面上理解即:微小的服务; 微小:微服务体积小,复杂度低,一个微服…

SpringBoot整合XXL-JOB详解

❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…

【ESP8266】:基于ESP8266的LED时钟

项目场景: 在嘉立创看到一个好看的LED时钟,自己复刻一个。 项目效果: 视频效果: ESP8266LED时钟 项目介绍: 随着物联网的快速发展,嵌入式系统成为了现代生活中不可或缺的一部分。本论文基于ESP8266开发板&a…

配置VUE环境过程中 npm报错的处理方案以及VUE环境搭建过程

背景:VUE已经出来很久了,一直想研究这个东西也很久了。由于各种各样的原因,一直没有能处理。最近终于有时间可以研究了。 奈何报错了 嘤嘤嘤~~ 针对报错情况,其实后来没有找到什么好的方案,几经周折,终于搭…

vscode不显示横滚动条处理

最近发现vscode打开本地文件不显示水平的滚动条,但是打开一个临时文件是有水平滚动条的。 解决方案 可以一个个试 vscode配置 左下角设置–设置–搜索Scrollbar: Horizontal auto 自动visible 一直展示hidden 一直隐藏 拖动底部状态栏 发现是有的,但是…

Lua与C++交互

文章目录 1、Lua和C交互2、基础练习2.1、加载Lua脚本并传递参数2.2、加载脚本到stable(包)2.3、Lua调用c语言接口2.4、Lua实现面向对象2.5、向脚本中注册c的类 1、Lua和C交互 1、lua和c交互机制是基于一个虚拟栈,C和lua之间的所有数据交互都通…

深入探究Selenium定位技巧及最佳实践

在使用Selenium进行Web自动化测试时,准确地定位元素是非常重要的一步。Selenium提供了多种元素定位方法,本文将深入探究这八大元素定位方法,帮助读者更好地理解和应用Selenium的定位技巧。 1. ID定位 ID是元素在HTML中的唯一标识符&#xff…

GitHub commit时出现 无法访问443 Operation timed out的解决办法

GitHub commit时出现 无法访问443 Operation timed out的解决办法 1.问题描述2. 环境3.解决方法4.如果上述方法不行,那就再试一试下面这个方法4.1 首先确认自己的网页可以打开github4.2 按照如下配置http和https代理4.2.1 找端口号 5. 参考链接 1.问题描述 当使用g…