Android Studio NDK 入门教程(2)--Java与C++之间的简单数据转换与传递

概述

本文将讲解Java与原生代码之间的数据转换,包括基础类型之间的转换,以及数组的传递与转换。

类型转换表

JAVA基础类型与C++之间的对应表

Java类型 C/C++类型 描述
boolean jboolean 无符号8位整数
byte jbyte 有符号8位整数
char jchar 有符号16位整数
short jshort 有符号16位整数
int jint 有符号32位整数
long jlong 有符号64位整数
float jfloat 32位单精度浮点数
double jdouble 64位双精度浮点数

这一点可以从jni.h头文件中定义看到:

typedef unsigned char   jboolean;       /* unsigned 8 bits */
typedef signed char     jbyte;          /* signed 8 bits */
typedef unsigned short  jchar;          /* unsigned 16 bits */
typedef short           jshort;         /* signed 16 bits */
typedef int             jint;           /* signed 32 bits */
typedef long long       jlong;          /* signed 64 bits */
typedef float           jfloat;         /* 32-bit IEEE 754 */
typedef double          jdouble;        /* 64-bit IEEE 754 */

由上面的JNI定义代码可以看到,基础类型都是根据Java类型大小等价转换的。因此在使用Java传递过来的基础类型或者返回Java中的基础类型都可以直接使用。比如:

JNIEXPORT jint JNICALL
Java_com_example_wastrel_test_Test_BaseTypeTest(JNIEnv *env, jclass type,jint i) {
   
   
    return i+5;
}

Java引用类型与C++之间的对应表

<
Java类型 C/C++类型 描述
Objec jobject 任何Java对象
Class jclass Class类对象
String jstring String类对象
Object[] jobjectArray 对象数组
boolean[] jbooleanArray 布尔数组
byte[] jbyteArray 字节数组
char[] jcharArray 字符型数组
short[] jshortArray 短整型数组
int[] jintArray 整型数组
long[] jlongArray 长整型数组
float[] jfloatArray 浮点型数组
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值