Android NDK開發中java資料型別與C/C++資料型別的對應關係
轉自:http://blog.csdn.net/z13144099248m/article/details/41675007
在java中有兩種資料型別:
1、引用資料型別:字串類,陣列類以及其他類
引用型別與其原生型別的對應關係如下表:
Java型別 | 原生型別 |
java.lang.Class | jclass |
java.lang.Throwable | jthrowable |
java.lang.String | jstring |
其他的Object類 | jobject |
java.lang.Object[] | jobjectArray |
boolean[] | jbooleanArray |
byte[] | jbyteArray |
char[] | jcharArray |
short[] | jshortArray |
int[] | jintArray |
long[] | jlongArray |
float[] | jfloatArray |
double[] | jdoubleArray |
其他型別的陣列 | Jarray |
2、基本資料型別:boolean,byte,char,short,int,long,float以及double
基本資料型別可以直接與C/C++的相應的基本資料型別相對應,如下表所示:
Java型別 | JNI型別 | C/C++型別 | 大小 |
boolean | jboolean | unsigned char | 無符號8位 |
byte | jbyte | char | 有符號8位 |
char | jchar | unsigned short | 無符號16位 |
short | jshort | short | 有符號16位 |
int | jint | int | 有符號32位 |
long | jlong | long long | 有符號64位 |
float | jfloat | float | 32位 |
double | jdouble | double |
64位 |
轉自:http://carywei.iteye.com/blog/1075647
Android JNI 使用的資料結構JNINativeMethod詳解
2009-04-02 15:53
Andoird 中使用了一種不同傳統Java JNI的方式來定義其native的函式。其中很重要的區別是Andorid使用了一種Java 和 C 函式的對映表陣列,並在其中描述了函式的引數和返回值。這個陣列的型別是JNINativeMethod,定義如下:
typedef struct {
const char* name;
const char* signature;
void* fnPtr;
} JNINativeMethod;
Android JNI 使用的資料結構JNINativeMethod詳解
2009-04-02 15:53
Andoird 中使用了一種不同傳統Java JNI的方式來定義其native的函式。其中很重要的區別是Andorid使用了一種Java 和 C 函式的對映表陣列,並在其中描述了函式的引數和返回值。這個陣列的型別是JNINativeMethod,定義如下:
typedef struct {
const char* name;
const char* signature;
void* fnPtr;
} JNINativeMethod;
第一個變數name是Java中函式的名字。
第二個變數signature,用字串是描述了函式的引數和返回值
第三個變數fnPtr是函式指標,指向C函式。
其中比較難以理解的是第二個引數,例如
"()V"
"(II)V"
"(Ljava/lang/String;Ljava/lang/String;)V"
實際上這些字元是與函式的引數型別一一對應的。
"()" 中的字元表示引數,後面的則代表返回值。例如"()V" 就表示void Func();
"(II)V" 表示 void Func(int, int);
具體的每一個字元的對應關係如下
字元 Java型別 C型別
V void void
Z jboolean boolean
I jint int
J jlong long
D jdouble double
F jfloat float
B jbyte byte
C jchar char
S jshort short
陣列則以"["開始,用兩個字元表示
[I jintArray int[]
[F jfloatArray float[]
[B jbyteArray byte[]
[C jcharArray char[]
[S jshortArray short[]
[D jdoubleArray double[]
[J jlongArray long[]
[Z jbooleanArray boolean[]
上面的都是基本型別。如果Java函式的引數是class,則以"L"開頭,以";"結尾中間是用"/" 隔開的包及類名。而其對應的C函式名的引數則為jobject. 一個例外是String類,其對應的類為jstring
Ljava/lang/String; String jstring
Ljava/net/Socket; Socket jobject
如果JAVA函式位於一個嵌入類,則用$作為類名間的分隔符。
例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"
相關文章
- C++與Rust資料型別對應關係C++Rust資料型別
- MYSQL資料庫型別與JAVA型別對應關係MySql資料庫型別Java
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- MySQL與Java常用資料型別的對應關係MySqlJava資料型別
- C#與C++型別對應關係總結C#C++型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- Java中的基本資料型別與引用資料型別Java資料型別
- C++資料型別C++資料型別
- Java 支援的資料型別與 MySQL 支援的資料型別對比Java資料型別MySql
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- 關係型資料庫和非關係型資料庫的區別資料庫
- 【C++】資料型別-列舉型C++資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- C++檢視資料型別C++資料型別
- SQL SERVER與C#的資料型別對應表SQLServerC#資料型別
- Java中的資料型別Java資料型別
- MyBatis Java 和 資料庫 資料型別對應表MyBatisJava資料庫資料型別
- JS中資料型別、內建物件、包裝型別物件、typeof關係JS資料型別物件
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- Java資料型別Java資料型別
- C# 泛型中的資料型別判定與轉換C#泛型資料型別
- R 語言中雙中括號 [[]]與資料型別列表的關係資料型別
- 關係型資料庫與非關係型資料庫介紹!資料庫
- 基本資料型別與字串型別資料型別字串
- Java資料型別及型別轉換Java資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 資料型別: 資料型別有哪些?資料型別
- Oracle和sqlserver資料型別對應OracleSQLServer資料型別
- Java的基本資料型別Java資料型別
- C++的資料型別總結,不能錯過C++資料型別
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫
- Java基本資料型別Java資料型別
- Java Grammer:資料型別Java資料型別
- Java 基本資料型別Java資料型別
- 基本資料型別與API引用型別的使用資料型別API
- Android 與 JavaScript 互動 支援的資料型別AndroidJavaScript資料型別