一、简介

在 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数据类型和类型描述符相关推荐

  1. 基础IO(上):文件管理和描述符

    -----------------"如果说,非要一个人去的抗.那就让我去吧" 目录 (1)复习回顾(C提供文件操作接口): ①文件打开以及文件生成位置. 问:我们常说,文件在当前可 ...

  2. Linux 基础I/O :文件描述符,重定向,文件系统,软链接和硬链接,动态库和静态库

    文件描述符 重定向 文件系统 软链接和硬链接 动态库和静态库 文件描述符 上面两个接口分别是c语言的fread接口和linux的read接口,当我们在使用的时,可能会有疑问,为什么linux的io接口 ...

  3. 自动化测试之什么是python基础基本数据类型数值类型及序列类型

    前言: 大家都知道学习软件测试需要必须要掌握一门开发语言,对于测试小白来说我们都是推荐python进行学习,因为比较简单,那么今天笔者想给大家唠唠python语言的基本数据类型可以分为三类:数值类型. ...

  4. 全栈自动化测试之python基础基本数据类型数值类型及序列类型

    文章末尾给大家留了大量的福利 前言 大家都知道学习软件测试需要必须要掌握一门开发语言,对于测试小白来说我们都是推荐python进行学习,因为比较简单,那么今天笔者想给大家唠唠python语言的基本数据 ...

  5. MATLAB 语言基础知识 数据类型 数值类型 单精度运算

    本文说明如何对单精度数据执行算术运算和线性代数运算.此外,还说明了如何根据输入相应地按单精度或双精度计算结果. 创建双精度数据 首先创建一些数据,默认情况下为双精度. Ad = [1 2 0; 2 5 ...

  6. Android-JNI开发系列《七》补充jni与java的数据类型的对应关系和数据类型描述符

    人间观察 人只有不为生存而烦恼的时候,才会追求真正想要的东西. 在前面的几篇文章中有涉及到Java和JNI的通信,比如异常回调,Java和JNI的互相调用等.其中都免不了在通信过程中需要知道Java基 ...

  7. JNI学习积累之二 ---- 数据类型映射、域描述符说明

    本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 . 在JNI的世界里也存在类似的数据类型,与 ...

  8. USB开发基础:USB命令(请求)和USB描述符

    一.USB命令 在USB规范里,对命令一词提供的单词为"Request",但这里为了更好的理解主机与设备之间的主从关系,将它定义成"命令". 所有的USB设备都 ...

  9. python 描述符

    目录 引入 什么是描述符 描述符类型 共享陷阱 应用场景 验证器 ORM 描述符是 Python 语言中一个强大的特性,它隐藏在编程语言的底层,为许多神奇的魔法提供了便利. 引入 假设你需要一个学生类 ...

  10. GMAC接口(3)——传输描述符

    描述符 以太网子系统中的DMA基于描述符的链表来传输数据.该应用程序将在系统内存中创建这些描述符. 支持以下两种类型的描述符: Normal descriptor Context descript ...

最新文章

  1. 黑色星期五阿里云向海淘输出双11技术
  2. List<Map<String, Object>>——多层嵌套的数据结构
  3. AI繁荣下的隐忧——Google Tensorflow安全风险剖析
  4. Problem F. Grab The Tree HDU - 6324(树形dp+博弈)
  5. 纯CSS实现table表头固定(自创备忘)
  6. 【Alpha版本】十天冲刺集结令
  7. JUC与JVM并发编程学习笔记01
  8. 【Django 2021年最新版教程22】数据库model 批量插入创建
  9. 190628每日一句
  10. 时域离散信号/系统频域分析(matlab)零点,极点,因果,稳定
  11. 【PDF】PDF文件分页拆分(免费方法)
  12. 原画学习步骤,零基础一步步学原画
  13. TiDB分布式数据库培训实战教程(分布式集群架构、分布式大数据平台)
  14. 好课堂Scratch编程08 趣学篇(四)密林深处的危险气息
  15. CentOS 美化记录
  16. shell脚本:介绍、语法、运算、流程控制、对文件/输出流处理、案例
  17. 非线性规划的对偶问题
  18. win10商店打不开_win10应用商店的卸载和安装
  19. Python上使用及安装tesseract
  20. 华为、OPPO、vivo、小米牵头制定快充协议统一技术

热门文章

  1. 人人影视携2000万用户进军区块链,区块链会流行起来吗?
  2. 国内多家视频下载网站关闭:或为暂避风头
  3. 运动目标检测之光流法(2):金字塔Lucas-Kanade算法
  4. Ubuntu上安装博通无线网卡驱动
  5. cocos2dx面试题整理
  6. 2018-2019-2 20165205《网络对抗技术》Exp4 恶意代码分析
  7. 1068. 万绿丛中一点红(20)
  8. Android 之HierarchyViewer - 4939
  9. Hyperledger Fabric Peer的内部工作原理和实现方法
  10. 百度站点属性怎么设置?PC移动站/独立移动站/自适应/代码适配有什么区别? 404状态码和404页面有什么区别?对SEO有什么影响百度快照投诉不了怎么办(已经解决)提交反馈的按钮变成了灰色