NDK開發 - JNI數據類型與Java數據類型映射關係

介紹完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

引用類型對應關係:
http://gnaix92.github.io/blog_images/ndk/3.png函數

相關文章
相關標籤/搜索