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資料型別
- JNI/NDK開發指南(3):JNI資料型別及與Java資料型別的對映關係資料型別Java
- C++資料型別與C#對應關係C++資料型別C#
- [轉]ABAP資料型別與Java資料型別的對應關係資料型別Java
- MYSQL資料庫型別與JAVA型別對應關係MySql資料庫型別Java
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- MySQL與Java常用資料型別的對應關係MySqlJava資料型別
- <轉>Oracle資料型別與.NET中的對應關係Oracle資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- C#與C++型別對應關係總結C#C++型別
- SQL Server 2005 資料型別和.Net資料型別的對應關係SQLServer資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- C++資料型別C++資料型別
- Java 支援的資料型別與 MySQL 支援的資料型別對比Java資料型別MySql
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- C++的那些事:資料與型別C++型別
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- 關係型資料庫和非關係型資料庫的區別資料庫
- 【C++】資料型別-列舉型C++資料型別
- C#與Windows API對應資料型別C#WindowsAPI資料型別
- MapReduce 與 關係型資料庫的區別資料庫
- SqlServer與.NET的資料型別對映關係圖(轉)SQLServer資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- C++基本資料型別及型別轉換C++資料型別
- Java中的資料型別Java資料型別
- SQL SERVER與C#的資料型別對應表SQLServerC#資料型別
- 【轉載】C++ ,C#資料型別對照C++C#資料型別
- C++檢視資料型別C++資料型別
- C++/C高階資料型別C++資料型別
- MyBatis Java 和 資料庫 資料型別對應表MyBatisJava資料庫資料型別
- C++基本資料型別總結C++資料型別
- 關於資料庫中的型別和entity bean裡面的型別對應問題資料庫型別Bean
- Android NDK開發之旅11 JNI JNI資料型別與方法屬性訪問Android資料型別
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- oracle中date資料型別與timestamp資料型別的轉換Oracle資料型別
- Java資料型別Java資料型別
- C# 泛型中的資料型別判定與轉換C#泛型資料型別
- 誰知道資料庫中的 longbinary型別對應的Java型別是什麼?資料庫型別Java