JNI_数据类型
JNI数据类型和java的对应关系
c/c++中基本数据类型长度和java部分并不相同,在jni规范中统一转换方便使用。
类型映射表
java类型 | 本地类型 | 数据描述 |
---|---|---|
boolean | jboolean | c/c++ unsigned 8 bits |
byte | jbyte | c/c++ signed 8 bits |
char | jchar | c/c++ unsigned 16 bits |
short | jshort | c/c++ signed 16 bits |
int | jint | c/c++ signed 32 bits |
long | jlong | c/c++ signed 64 bits |
float | jfloat | c/c++ 浮点 32 bits |
double | jdouble | c/c++ 浮点 64 bits |
Object | jobject | all Objects |
Class | jclass | Class Object |
String | jstring | String Object |
Object[] | jobjectArray | Object array |
jvalue | 基本数据类型和引用类型的集合 |
在C语言中使用jni规范时,所有的引用类型都定义为 jobject 类型:
typedef jobject jclass;类和接口的关系描述
java : java.lang.string
jni : java/lang/string数组引用表示方式
java : int[] ; int[][] ;
jni : [I ; [[I ;
JNIEnv参数
JNIEnv是一个线程线程相关的变量,使c/c++可以访问虚拟机中的函数表,是jni的运行环境。
C语言中调用env
(*env) -> FindClass(env,"java/lang/String");
C++中调用
env -> FindClass(env,"jaca/lang/String");