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

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

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

简单名称:指没有类型和参数修饰的方法或字段的名称,如Test类中inc()方法和m字段的简单名称分别是“inc”和“m”

描述符:作用是描述字段的数据类型、方法的参数列表(包括数量、类型以及顺序)和返回值。

基本数据类型对应的描述符标志符如表:

标识字符 含义

对于数组类型,每一纬度将使用一个前置的“[”字符来描述。

例:一个定义为“java.lang.String[][]”类型的二维数组,将被记录为:“[[Ljava/lang/String;”。一个整型数组“int[]”将被记录为“[I”。

用描述符来描述方法时,按照先参数列表,后返回值的顺序描述,参数列表按照参数的严格顺序放在一组小括号内“()”。如:

方法:“void methond()”的描述符为“()V”。

cdouble转int_C#string转double_double转换为string

方法:“java.lang.String.toString()”的描述符为“()Ljava/lang/String”;

方法:“int indexOf(char[]source,int sourceOffset,int sourceCount,char[]taget,int targetOffset,int targetCount)”的描述符为“([CII[CII)I”。

方法表集合:方法表的结构同字段表一样,包括了访问标志(access_flags)、名称索引(name_index)、描述符索引(descriptor_index)、属性表集合几项(attributes)几项。因为volatile和transient关键字不能修饰方法,所以方法表的访问标志中没有ACC_VOLATILE和ACC_TRANSIENT标志,相对增加了,synchronized、native、strictfp和abstract对应的ACC_SYNCHRONIZED、ACC_NATIVE、ACC_STRICTFP和ACC_ABSTRACT标志。

通过方法表,方法的定义可以通过访问标志、名称索引、描述符索引表达清楚,但不能描述方法里的代码。而方法里的Java代码,经过编译器编译成字节码指令后,存放在方法表结构的属性表集合(attributes)中一个名为“Code”的属性里面。属性表集合将在下文描述。

属性表集合:属性表(attribute_info)在字段表与方法表的结构中已经出现过。与Class文件的其他数据部分严格的顺序、长度等要求不同,属性表不再要求严格顺序。如表:只列举Code、ConstantValue与Exceptions属性,其他省略。

属性名称 使用位置 含义

对于每个属性,他的名称需要从常量池中引用一个CONSTANT_Utf8_info类型的常量来表示,而属性值的结构是可以完全自定义的。只需要一个u4长度属性说明属性值所占位数。

类型 名称 数量

Java方法体中的代码经过javac编译器处理后,最终变成“字节码指令”存储在Code属性内。Code属性出现在方法表的属性集合之中,但并非所有的方法表都必须存在这个属性,譬如接口或者抽象类中的方法就不存在Code属性。Code属性表的结构:如表

类型 名称 数量

attribute_name_index:是一项指向CONSTANT_Utf8_info型常量的索引,常量值固定为“Code”,他代表了该属性的属性名称。

attribute_length:指示了属性值的长度。

max_stack:代表了操作数栈(Operand Stacks)深度的最大值。double转换为string在方式执行的任意时刻,操作栈都不会超过这个深度。虚拟机运行的时候需要根据这个值来分配栈帧中的操作栈深度。


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

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

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