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

Java类文件的结构

因为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新增,用于存储额外的调试信息。...RuntimeVisibleAnnotations属性作用相反,用于指定哪些注解是运行时不可见的 RuntimeInvisibleParameterAnnotations 方法表 JDK1.5新增,类似

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 基础篇】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中有Package的类如何编译运行

    最近看《java编程思想》的时候,使用javac编译了一下带package的java文件,可惜运行失败了。...不多说,下面是一个比较好的、明晰的方法: 编写一个类,它是按照包的层次编码的,如果此时想通过javac和java命令来编译运行,就需要如下来做: 1.编译       编译的指令是javac      ...编译方式:文件根目录 javac 文件名.java 比如:一个文件名字:EchoClient.java           文件路径:D:\workspace\MinaTest\com\dvn\li\suntest...文件名.java  来生成package目录。 2. 运行 运行时候需要注意了,不能文件的根目录,是到文件的包目录的上层目录——可以理解为工程目录下,然后运行,文件名前需要加上包名。...运行过程: cmd 回车 D: 回车 cd D:\workspace\MinaTest回车 java   com.dvn.li.suntest.EchoClient 回车      搞定!

    1.2K40

    java定义全局变量的方法_java调用另一个类的变量

    大家好,又见面了,我是你们的朋友全栈君。 “java中全局变量应该放哪儿? ”引发的争论 1、单独写一个final的类,在里面定义final static的全局变量,在其它程序里包含进来就可以了。...2、类中的任何static public的成员变量都是全局共享的。...5、FINAL STATIC应该理解为常量,而不是“全局变量”,它的目的不是为了让你每个类都可以访问,而是独立于具体对象,抽象到类层次的东东。...以上争论的焦点是:public static final 类型 变量 是否属于所谓的“全局变量”不得而知。它只不过实现了全局的意图。我们要用到该变量时,只需要把该变量所在的类引用进来就可以了。...,并使之成为常数类或常数接口的做法是对此功能的误用,并不鼓励如此使用,有兴趣可以参阅《effective java》——机械工业出版社出版 Joshua Bloch 著), 但首先,final or final

    2.6K20

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

    在这篇文章中我们来一起看一下 class 文件的结构,来进一步加深我们对虚拟机的类加载机制和类机制的理解。本文参考了 《深入理解 Java 虚拟机》一书。...解析 .class 文件 ​ 我们都知道一个 Java 类(.java)文件在被 Java 编译器(javac) 编译过后,如果语法没有错误,则会生成一个对应的 .class 文件,这个 .class...29 的常量,即为 ClassContent.java,这也就是编译出这个 .class 文件的 Java 文件的文件名。 ​...总言之这部分工作需要确保该类在加载进入虚拟机之后在被使用的过程中不会出现致命性的问题以威胁虚拟机的正常运行状态。 ​...好了,在这篇文章中我们通过一个例子来看了一下类文件格式,相信你对 Java 类机制有了一个更深的理解。如果博客中有什么不正确的地方,还请多多指点。如果觉得这篇文章对您有帮助,请不要吝啬您的赞。

    65120

    Java IO流之合并文件到另一个文件

    有时候,我们的IO要求实现将两个文件的内容合并到一个文件里来。 比如,我们有一个1.txt,一个2.txt。我们该如何将两个文件里面的内容,合并到3.txt呢?...创建第一个文件的流 //1.txt字符输入流与字符缓冲输入流 FileReader fr = new FileReader("D:\\1.txt"); BufferedReader br = new BufferedReader...创建第二个文件的流 //2.txt字符输入流与字符缓冲输入流 FileReader fr2 = new FileReader("D:\\2.txt"); BufferedReader br2 = new...创建第三个文件的流 //3.txt字符输出流与字符缓冲输出流 FileWriter fw3 = new FileWriter("D:\\3.txt"); BufferedWriter bw3 = new...//刷新缓冲区 bw3.flush(); //关闭流 br.close(); br2.close(); bw3.close(); 成品代码 package IoDemo; import java.io.

    95520

    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文件字节码解析

    语言:面向对象、静态类型、编译执行、有VM/GC和运行时、跨平台的高级语言。...如果一个 class 文件的魔术不是 0xCAFEBABE,那么虚拟机将拒绝运行这个文件 次版本号(minor version):.class 文件的第 5 - 6 个字节,即编译生成该 .class...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个字节 接口索引计数器,如果该类没有实现任何接口

    88920

    Java -jar参数详解:掌握Java可执行JAR文件的运行技巧

    作为一种常用的开发语言,Java经常使用可执行的JAR(Java Archive)文件来打包和分发应用程序。使用java -jar命令运行JAR文件是一种方便快捷的方式。...本文将详细介绍java -jar命令的各种参数,帮助您充分利用这个功能。 一、简介 java -jar命令用于运行可执行的JAR文件。...它会自动查找JAR文件中的清单文件(MANIFEST.MF),并根据清单文件中的Main-Class属性指定的主类来启动应用程序。...使用这个参数可以了解应用程序在运行过程中加载的类的详细信息,包括类的名称、来源等。 -verbose:gc:打印垃圾回收信息。...-jar命令的常用参数、使用方法及其启动脚本,帮助您更好地掌握Java可执行JAR文件的运行技巧。

    3.6K30
    领券