JNI的數(shù)據(jù)類型
基本類型
JNI類型 | Java類型 | 描述 |
---|---|---|
jbyte | byte | 有符號姑宽,8位魂毁,整型 |
jshort | short | 有符號,16位,整型 |
jint | int | 有符號,32位陕壹,整型 |
jlong | long | 有符號,64位树埠,整型 |
jfloat | float | 32位糠馆,浮點(diǎn)型 |
jdouble | double | 64位,浮點(diǎn)型 |
jboolean | boolean | 無符號怎憋,8位又碌,整型 |
jchar | char | 無符號,16位绊袋,整型 |
void | void | N/A |
引用類型
JNI類型 | Java類型 | 描述 |
---|---|---|
jclass | Class | 類 |
jobject | Object | Java對象 |
jstring | String | 字符串 |
jobjectArray | Object[] | 對象數(shù)組 |
jbyteArray | byte[] | byte數(shù)組 |
jshortArray | short[] | short數(shù)組 |
jintArray | int[] | int數(shù)組 |
jlongArray | long[] | long數(shù)組 |
jfloatArray | float[] | float數(shù)組 |
jdoubleArray | double[] | double數(shù)組 |
jbooleanArray | boolean[] | boolean數(shù)組 |
jcharArray | char[] | char數(shù)組 |
jthrowable | Throwable | Throwable |
jmethodID赠橙、jfieldID
jmethodID可用于獲取類中函數(shù)的標(biāo)識,然后通過此標(biāo)識來調(diào)用函數(shù)愤炸。
jfieldID可用于獲取類中變量的標(biāo)識,然后通過此標(biāo)識來讀寫變量掉奄。
JNI的類型簽名
- JNI的類型簽名標(biāo)識了一個特定的Java類型规个,這個類型可以是類凤薛、方法或數(shù)據(jù)類型。
類和對象的簽名
-
采用
L+包名+類名+;
的形式诞仓,且將包名中的.替換為/缤苫。如:
java.lang.String
的簽名為Ljava/lang/String;
,注意末尾的;也是簽名的一部分墅拭。
基本數(shù)據(jù)類型的簽名
-
基本數(shù)據(jù)類型的簽名是有規(guī)律的活玲。
- 一般為首字母的大寫;
- boolean用Z谍婉,因?yàn)锽被byte占用了舒憾;
- long用J,因?yàn)長用來表示類的簽名穗熬。
Java類型 | 簽名 |
---|---|
byte | B |
short | S |
int | I |
long | J |
float | F |
double | D |
boolean | Z |
char | C |
void | V |
數(shù)組的簽名
- 一維數(shù)組的簽名就是
[+類型簽名
镀迂。
Java類型 | 簽名 |
---|---|
Object[] | [Ljava/lang/Object |
String[] | [Ljava/lang/String |
byte[] | [B |
short[] | [S |
int[] | [I |
long[] | [J |
float[] | [F |
double[] | [D |
boolean[] | [Z |
char[] | [C |
-
多維數(shù)組的簽名就是
n個[+類型簽名
,其中n表示數(shù)組的維度唤蔗。如:
int[][]
的簽名為[[I
探遵。
方法的簽名
-
方法的簽名為:(各參數(shù)類型簽名)返回值類型簽名。
如:
int func1()
的簽名為()I
妓柜。如:
void func2(int i)
的簽名為(I)V
箱季。如:
boolean func3(int a, double b, String[] c)
的簽名為(ID[Ljava/lang/String)Z
。