JNI基础:JNI数据类型和类型描述符
一、简介
在 JNI 开发中,我们知道,Java 的数据类型并不是直接在 JNI 里使用的,例如 int 就是使用 jint 来表示。
那么,就如我们来认识一下这些数据类型吧。
二、基本数据类型
Java数据类型 |
JNI本地类型 |
C/C++数据类型 |
数据类型描述 |
boolean |
jboolean |
unsigned char |
C/C++无符号8为整数 |
byte |
jbyte |
signed char |
C/C++有符号8位整数 |
char |
jchar |
unsigned short |
C/C++无符号16位整数 |
short |
jshort |
signed short |
C/C++有符号16位整数 |
int |
jint |
signed int |
C/C++有符号32位整数 |
long |
jlong |
signed long |
C/C++有符号64位整数 |
float |
jfloat |
float |
C/C++32位浮点数 |
double |
jdouble |
double |
C/C++64位浮点数 |
三、引用数据类型
Java的类类型 |
JNI的引用类型 |
类型描述 |
java.lang.Object |
jobject |
可以表示任何Java的对象,或者没有 JNI对应类型的Java 对象(实例方法的强制参数) |
java.lang.String |
jstring |
Java的String字符串类型的对象 |
java.lang.Class |
jclass |
Java的Class类型对象(静态方法的强制参数) |
Object[] |
jobjectArray |
Java任何对象的数组表示形式 |
boolean[] |
jbooleanArray |
Java基本类型boolean的数组表示形式 |
byte[] |
jbyteArray |
Java基本类型byte的数组表示形式 |
char[] |
jcharArray |
Java基本类型char的数组表示形式 |
short[] |
jshortArray |
Java基本类型short的数组表示形式 |
int[] |
jintArray |
Java基本类型int的数组表示形式 |
long[] |
jlongArray |
Java基本类型long的数组表示形式 |
float[] |
jfloatArray |
Java基本类型float的数组表示形式 |
double[] |
jdoubleArray |
Java基本类型double的数组表示形式 |
java.lang.Throwable |
jthrowable |
Java的Throwable类型,表示异常的所有类型和子类 |
void |
void |
N/A |
四、数据类型描述符
1. 什么是数据类型描述符
在JVM虚拟机中,存储数据类型的名称时,是使用指定的描述符来存储,而不是我们习惯的 int,float 等。
2. 对照表
Java类型 |
类型描述符 |
int |
I |
long |
J |
byte |
B |
short |
S |
char |
C |
float |
F |
double |
D |
boolean |
Z |
void |
V |
其他引用类型 |
L+类全名+; |
数组 |
[ |
方法 |
(参数)返回值 |
3. 示例
3.1 例如我们要表示一个 String 类
Java 类型:java.lang.String
JNI 描述符:Ljava/lang/String;
即一个 Java 类对应的描述符,就是 L 加上类的全名,其中 . 要换成 / ,最后 不要忘掉末尾的分号。
3.2 假如我们想要表示数组的话
Java 类型:String[]
JNI 描述符:[Ljava/lang/String;
Java 类型:int[][]
JNI 描述符:[[I
数组就是简单的在类型描述符前加 [ 即可,二维数组就是两个 [ ,以此类推。
3.3 方法
Java 方法:long f (int n, String s, int[] arr);
JNI 描述符:(ILjava/lang/String;[I)J
Java 方法:void f ();
JNI 描述符:()V
括号内是每个参数的类型符,括号外就是返回值的类型符。
JNI基础:JNI数据类型和类型描述符相关推荐
- 基础IO(上):文件管理和描述符
-----------------"如果说,非要一个人去的抗.那就让我去吧" 目录 (1)复习回顾(C提供文件操作接口): ①文件打开以及文件生成位置. 问:我们常说,文件在当前可 ...
- Linux 基础I/O :文件描述符,重定向,文件系统,软链接和硬链接,动态库和静态库
文件描述符 重定向 文件系统 软链接和硬链接 动态库和静态库 文件描述符 上面两个接口分别是c语言的fread接口和linux的read接口,当我们在使用的时,可能会有疑问,为什么linux的io接口 ...
- 自动化测试之什么是python基础基本数据类型数值类型及序列类型
前言: 大家都知道学习软件测试需要必须要掌握一门开发语言,对于测试小白来说我们都是推荐python进行学习,因为比较简单,那么今天笔者想给大家唠唠python语言的基本数据类型可以分为三类:数值类型. ...
- 全栈自动化测试之python基础基本数据类型数值类型及序列类型
文章末尾给大家留了大量的福利 前言 大家都知道学习软件测试需要必须要掌握一门开发语言,对于测试小白来说我们都是推荐python进行学习,因为比较简单,那么今天笔者想给大家唠唠python语言的基本数据 ...
- MATLAB 语言基础知识 数据类型 数值类型 单精度运算
本文说明如何对单精度数据执行算术运算和线性代数运算.此外,还说明了如何根据输入相应地按单精度或双精度计算结果. 创建双精度数据 首先创建一些数据,默认情况下为双精度. Ad = [1 2 0; 2 5 ...
- Android-JNI开发系列《七》补充jni与java的数据类型的对应关系和数据类型描述符
人间观察 人只有不为生存而烦恼的时候,才会追求真正想要的东西. 在前面的几篇文章中有涉及到Java和JNI的通信,比如异常回调,Java和JNI的互相调用等.其中都免不了在通信过程中需要知道Java基 ...
- JNI学习积累之二 ---- 数据类型映射、域描述符说明
本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 . 在JNI的世界里也存在类似的数据类型,与 ...
- USB开发基础:USB命令(请求)和USB描述符
一.USB命令 在USB规范里,对命令一词提供的单词为"Request",但这里为了更好的理解主机与设备之间的主从关系,将它定义成"命令". 所有的USB设备都 ...
- python 描述符
目录 引入 什么是描述符 描述符类型 共享陷阱 应用场景 验证器 ORM 描述符是 Python 语言中一个强大的特性,它隐藏在编程语言的底层,为许多神奇的魔法提供了便利. 引入 假设你需要一个学生类 ...
- GMAC接口(3)——传输描述符
描述符 以太网子系统中的DMA基于描述符的链表来传输数据.该应用程序将在系统内存中创建这些描述符. 支持以下两种类型的描述符: Normal descriptor Context descript ...
最新文章
- 黑色星期五阿里云向海淘输出双11技术
- List<Map<String, Object>>——多层嵌套的数据结构
- AI繁荣下的隐忧——Google Tensorflow安全风险剖析
- Problem F. Grab The Tree HDU - 6324(树形dp+博弈)
- 纯CSS实现table表头固定(自创备忘)
- 【Alpha版本】十天冲刺集结令
- JUC与JVM并发编程学习笔记01
- 【Django 2021年最新版教程22】数据库model 批量插入创建
- 190628每日一句
- 时域离散信号/系统频域分析(matlab)零点,极点,因果,稳定
- 【PDF】PDF文件分页拆分(免费方法)
- 原画学习步骤,零基础一步步学原画
- TiDB分布式数据库培训实战教程(分布式集群架构、分布式大数据平台)
- 好课堂Scratch编程08 趣学篇(四)密林深处的危险气息
- CentOS 美化记录
- shell脚本:介绍、语法、运算、流程控制、对文件/输出流处理、案例
- 非线性规划的对偶问题
- win10商店打不开_win10应用商店的卸载和安装
- Python上使用及安装tesseract
- 华为、OPPO、vivo、小米牵头制定快充协议统一技术
热门文章
- 人人影视携2000万用户进军区块链,区块链会流行起来吗?
- 国内多家视频下载网站关闭:或为暂避风头
- 运动目标检测之光流法(2):金字塔Lucas-Kanade算法
- Ubuntu上安装博通无线网卡驱动
- cocos2dx面试题整理
- 2018-2019-2 20165205《网络对抗技术》Exp4 恶意代码分析
- 1068. 万绿丛中一点红(20)
- Android 之HierarchyViewer - 4939
- Hyperledger Fabric Peer的内部工作原理和实现方法
- 百度站点属性怎么设置?PC移动站/独立移动站/自适应/代码适配有什么区别? 404状态码和404页面有什么区别?对SEO有什么影响百度快照投诉不了怎么办(已经解决)提交反馈的按钮变成了灰色