首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java类文件的结构

总览如下: 魔数与Class文件的版本 1.魔数0XCAFEBABE 2.次版本号和主版本号 常量池 1.类和接口的全限定名 2.字段的名称和描述符 3.方法的名称和描述符 访问标志 1.类的访问信息...因为Java不支持多重继承,所以父类索引只有一个,除了java.lang.Object外,所有Java类都有父类,因此除了java.lang.Object,所有java类的父类索引都不为0。...预定义的属性如下: 属性名称 使用位置 含义 Code 方法表 Java代码编译成的字节码指令 ConstantValue 字段表 final关键字定义的常量值 Deprecated 类、方法表、字段表...InnerClasses 类文件 内部类列表 LineNumberTable Code属性 Java源码的行号和字节码指令的对应关系 LocalVariableTable Code属性 方法局部变量描述...SourceFile 类文件 记录源文件名称 SourceDebugExtension 类文件 JDK1.6新增,用于存储额外的调试信息。

68630

Java类文件结构

类文件结构public class TestClass {private int m;public int inc() {return m + 1; }}1.魔数 每个Class文件的头四个字节被称为...高版本JDK可以向下兼容以前版本的Class文件,但不能运行之后的版本,所以虚拟机拒绝执行超过其版本号的Class文件。...9.Code属性 可以看到javap最后放出了Code内容,这里包含的就是整个class文件的核心,你的方法内容被编译在这里。这里我的类只定义了一个方法,却有两个方法被编译了出来,这是为什么呢?...又印证了java会给每一个类隐式定义一个构造方法。 而我的方法明明没有参数,为什么又有Arg_size=1呢?...Java语言的潜规则:在任实例方法中,都可以通过this访问到方法所属的对象——哈哈哈哈,我猜大家平时在写代码的时候在方法内引用当前类的属性都不会显式的把this.给写出来,而是直接拿属性了。

7800
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 类机制(3)---- 类文件结构

    在这篇文章中我们来一起看一下 class 文件的结构,来进一步加深我们对虚拟机的类加载机制和类机制的理解。本文参考了 《深入理解 Java 虚拟机》一书。...解析 .class 文件 ​ 我们都知道一个 Java 类(.java)文件在被 Java 编译器(javac) 编译过后,如果语法没有错误,则会生成一个对应的 .class 文件,这个 .class...在 .class 文件中值为 CAFEBABY(咖啡宝贝?),这个值非常有意思,因为其意义正好对应 Java 的图标: ? 来杯 82 年的 Java 压压惊?...29 的常量,即为 ClassContent.java,这也就是编译出这个 .class 文件的 Java 文件的文件名。 ​...好了,在这篇文章中我们通过一个例子来看了一下类文件格式,相信你对 Java 类机制有了一个更深的理解。如果博客中有什么不正确的地方,还请多多指点。如果觉得这篇文章对您有帮助,请不要吝啬您的赞。

    65120

    【Java 基础篇】Java文件类详解

    导言 Java提供了丰富的文件操作功能,其中java.io.File类是用于处理文件和目录的主要类之一。通过File类,我们可以创建、删除、重命名和检查文件或目录的存在等操作。...本文将详细介绍Java中的File类及其常见用法,并提供一些示例代码。 一、文件类概述 File类是Java中处理文件和目录的基础类之一。...delete(): 删除文件或目录。 二、创建文件 在Java中,我们可以使用File类来创建新的文件。...需要注意的是,File类在Java 7及更高版本中已过时,推荐使用java.nio.file包中的Path和Files类进行文件操作。但是,File类仍然可以在旧代码中使用。...希望本文对你理解和使用Java的文件类有所帮助!

    19020

    java class类文件「建议收藏」

    根据 Java 虚拟机规范,类文件由单个 ClassFile 结构组成: ClassFile { u4 magic; //Class 文件的标志...Class文件字节码结构组织示意图 (之前在网上保存的,非常不错,原出处不明): 类文件字节码结构组织示意图 2.1 魔数 u4 magic; //Class 文件的标志 每个 Class 文件的头四个字节称为魔数...高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。...interfaces[interfaces_count];//一个雷可以实现多个接口 类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名,由于 Java 语言的单继承,所以父类索引只有一个...,除了 java.lang.Object 之外,所有的 java 类都有父类,因此除了 java.lang.Object 外,所有 Java 类的父类索引都不为 0。

    43830

    Java文件操作类效率对比

    前言 众所周知,Java中有多种针对文件的操作类,以面向字节流和字符流可分为两大类,这里以写入为例: 面向字节流的:FileOutputStream 和 BufferedOutputStream 面向字符流的...,比较这些类写入文件的性能。...(每行内容均为“写入文件Data\n”),比较其耗费时间 横向比较:对于同一个文件操作类,比较写入不同行数内容情况下所耗费时间;本文以2的次方指数级增长行数 1 import java.io.File...后记 从以上分析可知(注意横坐标写入行数是指数级增加的),各个类的时间复杂度大致为O(k),其中不同的类的k不同,导致了最终巨大的差异。...且慢,让我们把写入文件的数据改一下: 1 import java.io.File; 2 import java.io.FileOutputStream; 3 import java.io.*

    1.1K40

    java类的class文件字节码解析

    文件的 JDK 次版本号。...ACC_PUBLIC, ACC_SUPER 2.2.4 类索引、父类索引和接口索引集合 在class文件中,将用这三项来标识类的继承关系。...索引项 长度 说明 this_class 2个字节 类索引,用于确定这个类的全限定名 super_class 2个字节 父类索引,用于确定这个类父类的全限定名(Java语言不允许多重继承,故父类索引只有一个...除了java.lang.Object类之外所有类都有父类,故除了java.lang.Object类之外,所有类该字段值都不为0) interfaces_count 2个字节 接口索引计数器,如果该类没有实现任何接口...的内容,#12 即常量池中的HelloByteCode.java 这个类属性值表示的内容为: SourceFile: "HelloByteCode.java" 至此,我们完整解析了class类的字节码

    88920

    《Java核心技术》 Class类文件结构开篇Class类文件结构

    如果使用JDK1.5运行使用JDK1.6编译的Class文件,会报: java.lang.UnsupportedClassVersionError: Bad version number in .class...file 就是由于JDK1.6编译的文件版本号超过了JDK1.5虚拟机所接受的范围 Java class文件是二进制文件。...Class类文件结构 class文件的结构 简单讲,jvm的class文件是针对jvm的私家定制。只要运行在jvm上byte code,都需要按照class文件format来。否则jvm解析不了。...官网文档: The Java Virtual Machine class file format class文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义...,类的全限定名、字段、方法都是使用CONSTANT_Utf8_info类型常量来描述名称,而该常量的长度由2个字节表示,所以类的全限定名、字段名、方法名的最大长度不能超过2个字节所能表示的最大整数,也就是

    60630

    获取JVM转储文件的Java工具类

    在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法。...这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获取转储文件的方法,并演示了如何使用jhat工具浏览/分析生成的二进制堆转储。...com.sun.management.HotSpotDiagnosticMXBean; import org.slf4j.Logger; import javax.management.MBeanServer; import java.lang.management.ManagementFactory...*/ private static volatile HotSpotDiagnosticMXBean hotspotMBean; /** * 下载内存转储文件...下面将生产好的heap.bin文件拉回到本地或者在服务端用jhat -port 8888 heap.bin工具进行处理,然后访问:http://localhost:8888即可查看当时JVM堆内存的使用情况

    81510

    链表-头结点和头指针的区别

    理解下头结点 1.头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度)。...2.有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。 3.首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。 4.头结点不是链表所必需的。...理解下头指针 1.在线性表的链式存储结构中,头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。 2.头指针具有标识作用,故常用头指针冠以链表的名字。...头指针是链表的必要元素。 ? 1.头指针是指链表指向第一个结点的指针 2.若链表有头结点,则是指向头结点的指针 3.头指针具有标识作用,用头指针冠以链表的名字 4.无论链表是否为空,头指针均存在

    1.1K20

    Java读取配置文件(Properties类)

    参考链接: Java文件类 摘要:在开发项目的过程中,有些参数或者数据等是需要经常改动的。比如:数据库的配置,ftp路径,落地文件的路径等等。...以下内容是在Java中读取配置文件的一些方法的介绍、使用。 ...Properties类  作用  Properties类主要用于读取Java的配置文件,可以读取后缀是.properties和.cfg的配置文件。 ...文件内容的格式是:键=值 ,比如:name=张三  文件中内容的注释可以用:#,比如:#我是被注释掉的内容  结构:    Properties 类表示了一个持久的属性集。...; import java.util.Set; /**  * 读取配置文件的工具类  * @author 52363  *  */ public class ReadConfigurationFileUtils2

    1.1K20

    java中IO写文件工具类

    下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂。...其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的.../** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] getKeywordFiles(String path...; // 删除完里面所有内容 String filePath = folderPath; filePath = filePath.toString(); java.io.File myFilePath...= new java.io.File(filePath); myFilePath.delete(); // 删除空文件夹 } catch (Exception e) { log.error

    82130
    领券