NDK开发(二)--JNI基础知识
2019-11-24 本文已影响0人
骑着蜗牛闯世界666
一、JNI数据类型
JNI的数据类型包含两种:基本类型和引用类型,每个java的数据类型,都有相对应的JNI类型。
1、基本数据类型
Java中的数据类型的对应关系如下:
![](https://img.haomeiwen.com/i2998242/cfed93ca78cbb028.jpg)
2、引用类型
Java中的引用数据类型的对应关系如下:
![](https://img.haomeiwen.com/i2998242/b96495a842a7d233.jpg)
二、JNI类型签名
JNI的类型签名标识一个特定的Java类型,这个类型可以是类也可以是方法或者数据类型。
- 类签名
L+包名+类名+;
的形式,在编写的时候,需要将全路径里面的"."替换成“/”,例如最常用的java.land.String
对应的签名是Ljava/land/String;
- 基本数据类型签名
采用的是大写字符来表示。基本上都是基本数据类型的首字母大写,但boolean和long除外,因为B已经被byte占用,L表示的是类签名。
-w311
- 对象签名和数组签名
其实就是类签名,譬如String对象额签名是
Ljava/lang/String;
。一维数组签名的格式为[+类型签名
,譬如int数组,对应的签名就是[I
,依此类推,其他类型对应的数组签名如下:
int[] 其描述符为[I float[] 其描述符为[F String[] 其描述符为[Ljava/lang/String; Object[] 描述符为[Ljava/lang/Object;
多维数组则是n个[ +该类型的域描述符
,N代表的是几维数组。例如:
int[][] 其描述符为[[I float[][] 其描述符为[[F
当在开发过程中,可以使用javap -s + 对应的类
,即可打印出所有的方法签名。
REF
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp9502