Android JNI中的数据传递
1、JNI 基本类型
当 Java 代码与本地代码 C/C++ 代码相互调用时,肯定会有参数的传递。两者属于不同的语言,数据类型有差别,此时,JNI 要保证两种语言之间的数据类型和数据空间大小的匹配。
比如:Java 中 char 类型占 2 个字节,int 类型占 4 个字节;但在 C 语言中,char 类型占 1 个字节,int 类型的长度与平台有关。
为了两种语言类型和长度的匹配,JNI 定义了新的数据类型。
| Java 数据类型 | JNI 数据类型 | 
| boolean | jboolean | 
| byte | jbyte | 
| char | jchar | 
| short | jshort | 
| int | jint | 
| long | jlong | 
| float | jfloat | 
| double | jdouble | 
| 所有引用类型 | jobject | 
2、JNI 引用类型
在本地代码中为了访问 Java 运行环境中的引用类型,在 JNI 中也定义了一套对应的引用类型,
| JNI 引用类型 | Java 引用类型 | 
| jobject | 所有引用类型父类 Object | 
| jclass | java.lang.Class 类型 | 
| jstring | java.lang.Class 类型 | 
| jarray | 数组类型 | 
| jobjectArray | 对象数组类型 | 
| jbooleanArray | 布尔数组类型 | 
| jbyteArray | 字节数组类型 | 
| jcharArray | 字符数组类型 | 
| jshortArray | 短整型数组类型 | 
| jintArray | 整型数组类型 | 
| jlongArray | 长整型数组类型 | 
| jfloatArray | 浮点数组类型 | 
| jdoubleArray | 双精度数组类型 | 
| jthrowArray | java.lang.Throwadble 类型 | 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号