介紹完Android JNI的開發流程就要開始碼代碼了,不過在碼代碼前仍是有必要了解下JNI數據類型與Java數據類型映射關係,直接開始寫確定會懵逼。java
傳送門:NDK開發 - JNI數據類型與Java數據類型映射關係git
在調用 Java native 方法將實參傳遞給 C/C++ 函數的時候,會自動將 java 形參的數據類型自動轉換成 C/C++ 相應的數據類型,因此咱們在寫 JNI 程序的時候,必需要明白它們之間數據類型的對應關係。github
在 Java 語言中數據類型分爲基本數據類型和引用類型,一樣JNI中也對應着基礎數據類型和引用類型。數組
Java 中基本數據類型包括:byte, char, short, int, long, float, double, boolean。對應JNI數據類型的:jbyte, jchar, jshort, jint, jfloat, jdoubule, jboolean。
下面是JNI規範文檔中描述 Java 與 JNI數據類型的對應關係:安全
java language type | native | 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 |
Java語言中除了上述的8中基本數據類型外其餘都是引用類型:Object,String, 數組等。
全部的JNI引用類型所有是jobject類型,爲了使用方便和類型安全,JNI 定義了一個引用類型集合,集合當中的全部類型都是 jobject 的子類,這些子類和 Java 中經常使用的引用類型相對應。例如:jstring 表示字符串、jclass 表示 class 字節碼對象、jthrowable 表示異常、jarray 表示數組,另外 jarray 派生了 8 個子類,分別對應Java 中的 8 種基本數據類型(jintArray、jshortArray、jlongArray等)。app
引用類型對應關係:
函數