Android JNI开发笔记一:JNI的基本概念和类型

JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以调用C/C++代码,从Java1.1开始,JNI标准成为java平台的一部分。

最简单的来说,JNI就是一套可以和C/C++相互调用的API,jvm就是通过大量的jni技术使得java能够在不同平台上运行。

使用了JNI的一个标志就是native,如果一个方法被native修饰,那就说明这个方法是jni来实现的,它是通过本地系统api里的方法来实现的。当然这个本地方法可能是c或者C++,当然也可能是别的语言。jni是java跨平台的基础,jvm通过在不同系统上调用不同的本地方法使得jvm可以在不同平台间移植。

如下图所示

1.1 JavaC/C++ 中的基本类型的映射关系:

JNI是接口语言,因而,会有一个中间的转型过程,在这个过程中,有一个非常重要的也是非常关键的类型对接方

式,数据类型的转变,下表给出了相关的java和jni的数据格式对照。

下表中的数据为JNI基本数据类型及对应的长度java类型 jni类型 描述符

java类型

jni类型

描述符

booleanjbooleanZ
bytejbyteB
charjcharC
shortjshortS
intjintI
longjlongJ
floatjfloatF
doublejdoubleD
ClassjclassLjava/lang/Class;
StringjstringLjava/lang/String;
ObjectjobjectLjava/lang/Object;
byte[]jbyteArray[B

需要注意的是:

boolean型的描述符不是B,而是Z,因为B已经被byte使用

long型的描述符不是L,而是J

引用类型的描述符是 L + 全类名 + 分号

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值