1. 程式人生 > >Android JNI之數據類型

Android JNI之數據類型

vm t mit com ges tablet 類型 sig 完成 靜態註冊

JNI中數據類型的意義在於橋接Java數據類型與C數據類型。

簡單數據類型:

Java Type Native Type Description
boolean jboolean unsigned 8 bits
byte jbyte signed 8 bits
char jchar unsigned 16 bits
short jshort signed 16 bits
int jint signed 32 bits
long jlong signed 64 bits
float jfloat 32 bits
double jdouble 64 bits
void void N/A  

引用類型:
技術分享

特征類型(Signatures):
看到Signatures是不是有點眼熟,在我的Android JNI之靜態註冊中一帶而過的javah自動生成頭文件,註意看javah不僅完成了方法名的轉換,而且在方法註釋中標註了該方法的Signature,下面說一下這個對應關系。

Type Signature Java Type
Z boolean
B byte
C char
S short
I int
J long
F float
D double
L fully-qualified-class ; fully-qualified-class
[ type type[]
( arg-types ) ret-type method type

舉個例子,對於Java方法

long f (int n, String s, int[] arr);

其對應的特征值就是(ILjava/lang/String;[I)J

PS:這個特征值在動態註冊的時候很重要,這關系到你在Java類中聲明的native方法能否正確找到對應的native方法

Android JNI之數據類型