温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

class文件里边有什么

发布时间:2021-10-20 15:42:33 来源:亿速云 阅读:107 作者:iii 栏目:编程语言

这篇文章主要讲解了“class文件里边有什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“class文件里边有什么”吧!

属性表

首先属性表是用来补充信息用的,比如他可以继续补充类文件的信息、就是我们上面最后的那一段内容,还有他可以补充字段的信息,补充方法的信息。所以它出现的位置不同,补充的额外信息也会不一样。

下面我们 「简单」 的了解一下都有哪些 「主要」 的内容,之所以要简单、要了解主要的,就是因为它保存的额外信息实在太多了。

属性表的结构是由 2 个字节的属性名索引,4 个字节的属性内容长度,和 1 个字节的属性信息组成。

按照属性的类别可以分为:类文件属性、字段表属性、方法表属性 

类文件属性 

InnerClass

保存主类和内部类的关系 

SourceFile

记录生成这个Class文件的源码文件名称 

方法表属性 

Code

Java 程序方法体里面的代码经过 Javac 编译器处理之后, 最终变为字节码指令存储在Code属性内。并非所有的方法表都必须存在这个属性, 接口或者抽象类中的方法就不存在Code属性 。

code 属性里面还有属性表.... (套娃啊),其中包含

  • LineNumberTable 源码和生成的字节码行号映射表
  • LocalVariableTable 栈帧中的变量与源码变量的映射关系
  • ExceptionTable 异常表
  • ..... 
Exceptions

Exceptions属性的作用是列举出在throws关键字后面抛出的异常

MethodParameters

定义方法的参数信息 

字段表属性 

ConstantValue

这个属性用于为字段的静态变量赋值。只有字段声明为 static 时才有效。Javac 编译器在编译的时候,如果遇到 static 和 final 同时修饰的 基本类型或String 类型变量,会直接在 ConstantValue 属性进行字段初始化。也就是我们说的常量。如果没有 final 修饰,或者不是基本类型和 String 类型,则会在类初始化方法执行的时候初始化  <clinit> 

通用属性 

Deprecated

Deprecated属性用于表示某个类、 字段或者方法被弃用

感谢各位的阅读,以上就是“class文件里边有什么”的内容了,经过本文的学习后,相信大家对class文件里边有什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI