Java虚拟机中描述类型和方法有固定的描述符和Java语法中所所用的完全不一样,比如int应当表示为i,表示一个java类名,如:java.lang.Object类在虚拟机中应该使用java/lang/Object,表示引用对象应当使L类名;如:Object obj应当使用Ljava/lang/Object;表示,表示成员方法时候应当使用(参数类型描述符)返回值,如:void main(String[] args)应当使用([Ljava/lang/String;)V表示,表示数组使用[类型描述符,如int[]应当使用[i表示,表示构造方法名称应当使用<init>表示。
类型描述符表
| 描述符 | Java类型 | 示例 |
|---|---|---|
B |
byte |
B |
C |
char |
C |
D |
double |
D |
F |
float |
F |
I |
int |
I |
J |
long |
J |
S |
short |
S |
Z |
boolean |
Z |
[ |
数组 |
[IJ |
L类名; |
引用类型对象 |
Ljava/lang/Object; |
方法描述符示例**
| 方法示例 | 描述符 | 描述 |
|---|---|---|
static{...},static int id = 1; |
方法名:<clinit> |
静态语句块/静态变量初始化 |
public Test (){...} |
方法名:<init>,描述符()V |
构造方法 |
void hello(){...} |
()V |
V表示void,无返回值 |
Object login(String str) {...} |
(Ljava/lang/String;)Ljava/lang/Object; |
普通方法,返回Object类型 |
void login(String str) {...} |
(Ljava/lang/String;)V |
普通方法,无返回值 |
