Dalvik字节码的类型、方法与字段表示方法
1.类型
基本类型——》
引用类型——》对象与数组
Dalvik字节码类型描述符
取第一个字母大写,黄色为特殊
语法 含义
V | void |
Z | Boolean |
B | byte |
S | string |
C | char |
I | int |
J | long |
F | float |
D | double |
L | Java类型组 |
[ | 数组类型 |
Dalvik寄存器32位大小
L类型表示任何类,如Ljava/lang/String; 相当于Java.lang.String;
[类可以表示所有的基本类型的数组 如 [I 表示 int[] [[I表示int[][] 维数最大为255个
如[Ljava/lang/String/; 可以表示Java中的字符串数组
2.方法
方法格式如:
Lpackage/name/ObjectName;->MethodName(III)Z
Lpackage/name/ObjectName;理解为一个类型,MethodName为具体的方法名,(III)Z是方法的签名部分,III为方法的参数(此处为三个整形参数)(连在一起直接写的,读时注意分开看) Z表示返回类型(boolean)
试试下面这个例子
(String - 》 Ljava/lang/StringObject -> Ljava/lang/Object)
Stringmethod(int , int[][] , int , String ,Object[])
method(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String 是不是很简单有套路
# virtual methods 表示一个虚方法 #direct method 表示只是一个直接得方法
3.字段
//不是很理解,暂时没有遇到,以后补充吧
字段的格式如下:
Lpackage/name/ObjectName;->FileName:Ljava/lang/String;
字段由类型(L) 字段名()与字段类型()组成 冒号隔开:
#instance fields 实例字段 #static fields 静态字段