Android JNI中的数据传递

1、JNI 基本类型

当 Java 代码与本地代码 C/C++ 代码相互调用时,肯定会有参数的传递。两者属于不同的语言,数据类型有差别,此时,JNI 要保证两种语言之间的数据类型和数据空间大小的匹配。

比如:Java 中 char 类型占 2 个字节,int 类型占 4 个字节;但在 C 语言中,char 类型占 1 个字节,int 类型的长度与平台有关。

为了两种语言类型和长度的匹配,JNI 定义了新的数据类型。

JNI 与 Java 数据类型对应关系表
Java 数据类型JNI 数据类型
booleanjboolean
bytejbyte
charjchar
shortjshort
intjint
longjlong
floatjfloat
doublejdouble
所有引用类型jobject

 

 

 

 

 

 

 

 

 

 

 

2、JNI 引用类型

在本地代码中为了访问 Java 运行环境中的引用类型,在 JNI 中也定义了一套对应的引用类型,

JNI 与 Java 引用类型对应关系表
JNI 引用类型Java 引用类型
jobject所有引用类型父类 Object
jclassjava.lang.Class 类型
jstringjava.lang.Class 类型
jarray数组类型
jobjectArray对象数组类型
jbooleanArray布尔数组类型
jbyteArray字节数组类型
jcharArray字符数组类型
jshortArray短整型数组类型
jintArray整型数组类型
jlongArray长整型数组类型
jfloatArray浮点数组类型
jdoubleArray双精度数组类型
jthrowArrayjava.lang.Throwadble 类型

转载于:https://www.cnblogs.com/lialong1st/p/8989579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值