b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

double转换为string Jvm笔记总结(七):Class文件结构(2)

电脑杂谈  发布时间:2018-01-25 23:04:56  来源:网络整理

类型 标志 描述

这里写图片描述

由于Class文件中,方法、字段都需要引用CONSTANT_Utf8_info型常量来描述名称,所以CONSTANT_Utf8_info型常量的最大长度就是Java中方法、字段名的最大长度。也就是length的最大长度,即u2能表达的最大值:65535。所以如果Java程序中如果定义了超过64KB英文字符的变量或方法名,将无法编译。

C#string转double_double转换为string_cdouble转int

访问标志:在常量池之后,紧接着是两个字节代表的访问标志(access_flag),这个标志表示类或者接口的访问信息。

包括:这个Class是类还是接口;是否定义为public;是否定义为abstract等等。如图:

标志名称 标志值 含义

如上TestClass类代码,不是接口、枚举和注解,被public关键字修饰但没有声明为final和abstract。因此它的ACC_PUBLIC,ACC_SUPER 标志位为真,而ACC_FINAL、ACC_INYERFACE、ACC_ABSTRACT、ACC_ANNOTATION、ACC_ENUM等标志为假。因此他的access_flags的值为:0x0001 + 0x0020 = 0x0021;

类索引、父类索引与接口索引集合:类索引(this_class)、父类索引(super_class)都是一个u2类型的数据,而接口索引集合(interfaces)是一组u2类型的数据的集合,Class文件中由这三项数据来确定类的继承关系。类索引用于确定类的全限定名,父类索引用于确定类的父类的全限定名。由于Java不允许多重 继承,所以父类索引只有一个,除了java.lang.Object以外,所有的Java类都有父类,因此除了java.lang.Object外,所有的Java类的父类索引都不为0。接口索引集合用来描述这个类实现了哪些接口。类索引和父类索引都用一个u2的索引值表示,他们各自指向一个类型为CONSTANT_Class_info的类描述符常量,通过CONSTANT_Class_info类型的常量中的索引就能找到定义在CONSTANT_Utf8_info类型中的全限定名字符串。对于接口索引集合,入口的第一项是u2类型的数据为接口计数器(interfaces_count),表示索引表的容量。如果该类没有实现任何接口,则该计数器值为0,后面接口的索引表不占用任何字节。

字段表集合:字段表(field_info)用于描述类或者接口中声明的变量,换言之* 是对字段的定义。字段(field)包括类变量以及实例级变量,但是不包括在方法内部声明的局部变量。关于描述字段可以包含的信息有:字段的作用域(public、private、protect修饰符)、是实例变量还是类变量(staic)、可变性(final)、并发可见性(volatile)、可否被序列化(transient)、字段数据类型(基本类型、对象、数组)、字段名称。其中,各个修饰符都是布尔值,而字段名字、数据类型,只能引用常量池中的常量来描述*。

字段表结构如图:

类型 名称 数量

字段表修饰符放在access_flags项中,他与类中的access_flags非常类似,都是一个u2的数据类型。而name_index和descriptor_index,他们都是对常量池的引用,分别代表字段的简单名称以及字段和方法的描述符。

全限定名:包名加类名。例:在常量池中:org/fenixsoft/TestClass(org.fenixsoft.TestClass),仅仅是把“.”换成了“/”。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-62811-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 张玲利
      张玲利

      美国有全世界最顶尖的科技技术

      • 铃置洋孝
        铃置洋孝

        有种时尚大片的赶脚~

    热点图片
    拼命载入中...