JNI系列(四)JAVA数据类型和JNI类型对照表

Android JNI 数据类型 Java层和Native层都有自己的数据类型,在JNI中,这些数据类型又可以分为基本数据类型和引用数据类型,其中,基本数据类型是可以直接相互转换的,而引用数据类型则需要进行一定的装换才可以。为了方便对两个世界的基本数据类型进行相互装换,JNI为我们提供了一系列的方法来帮助我们完成这些工作。 JNI数据类型 1 基本数据类型 Java类型 JNI类型 类型签名 boolean jboolean Z byte jbyte B char jchar C shor 阅读详情
AI摘要

本文详细介绍了Java与JNI(Java Native Interface)之间的数据类型转换关系,包括基本类型和引用类型的映射,以及如何使用数据类型描述符来表示Java类和数组。

由于Java语言与C/C++语言数据类型的不匹配,需要单独定义一系列的数据类型转换关系来完成两者之间的对等(或者说是映射)。下面给出jni与Java数据类型对应表(jni类型均被定义在jni.h头文件中),如下表1和表2,在jni函数中,需要使用以下jni类型来等价与Java语言对应的类型。

java的基本类型可以直接与C/C++的基本类型映射在jin.h头文件中有如下定义:

# include <inttypes.h>      /* C99 */
typedef uint8_t         jboolean;       /* unsigned 8 bits */
typedef int8_t          jbyte;          /* signed 8 bits */
typedef uint16_t        jchar;          /* unsigned 16 bits */
typedef int16_t         jshort;         /* signed 16 bits */
typedef int32_t         jint;           /* signed 32 bits */
typedef int64_t         jlong;          /* signed 64 bits */
typedef float           jfloat;         /* 32-bit IEEE 754 */
typedef double          jdouble;        /* 64-bit IEEE 754 */
#else
typedef unsigned char   jboolean;       /* unsigned 8 bits */
typedef signed char     jbyte;          /* signed 8 bits */
typedef unsigned short  jchar;          /* unsigned 16 bits */
typedef short           jshort;         /* signed 16 bits */
typedef int             jint;           /* signed 32 bits */
typedef long long       jlong;          /* signed 64 bits */
typedef float           jfloat;         /* 32-bit IEEE 754 */
typedef double          jdouble;        /* 64-bit IEEE 754 */
#endif

Java 和JNI基本类型对照表

java的基本类型可以直接与C/C++的基本类型映射

Java与JNI引用类型对照表

与Java基本类型不同,引用类型对开发人员是不透明的。Java内部数据结构并不直接向原生代码开放。也就是说 C/C++代码并不能直接访问Java代码的字段和方法

引用类型以及关系

 

数据类型描述符

 

1. 什么是数据类型描述符

    在JVM虚拟机中,存储数据类型的名称时,是使用指定的描述符来存储,而不是我们习惯的 int,float 等。

2. 对照表

 

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 类型对照表 原文地址:https://blog.youkuaiyun.com/zhao007z5/article/details/80061819 Java和Jni类型对照表 引用类型对照表 Java的基本类型可以直接与C/C++的基本类型映射,基本类型的转换很简单。不过应注意下,转换成Native类型后对应数据类型的字长,例如char在java中占2个字节jchar在Native语言中也是... 阅读详情

相关推荐

卡门涡街可视化实战:从网格加密策略到动画后处理技巧

本文详细介绍了利用ANSYS Fluent进行卡门涡街可视化模拟的全流程,包括网格加密策略、求解器设置、涡街捕捉及动画后处理技巧。通过计算流体力学(CFD)方法,帮助工程师和研究人员高效模拟圆柱绕流现象,优化工程设计。

weixin_29309785的博客 414

【NDK】【009】JNI类型和Java类型对应关系,C++类对象和Java类对象互转

JNI类型和Java类型对应关系 Java类型 JNI类型 真实C++类型 boolean jboolean uint8_t,unsigned char byte jbyte int8_t,signed char char jchar uint16_t,unsigned short short jshort int16_t,short int jint int32_t,int long jlong int64_t,long long float jfloat floa

天天向上 Up Up Up (*^▽^*) 922

【深度学习】肺结节分割项目实战一:处理数据集

一、LIDC-IDRI数据集简介 官方网站 肺图像数据库协会的图像收集(LIDC-IDRI)包括诊断和带有病变注释标记的肺癌筛查胸部CT。这是一个网络公开的国际资源,用于肺癌检测和诊断的计算机辅助诊断(CAD)方法的开发、培训和评估。 数据集包含1018个病例,每个病例包括来自临床胸部CT扫描的图像和一个相关的XML文件,该文件记录了由四名经验丰富的胸部放射科医生进行的两阶段图像注释过程的结果。在最初的盲读阶段,每个放射科医生独立审查每个CT扫描,并标记出属于三种类型之一的病变(“结节>= 3mm”,

weixin_42182906的博客 1万+

JNA中关于int、float、double、char、byte等数组类型的类型映射

        最近在做百度的离线人脸识别 ,官方只给出了C++的SDK,但是我用的平台是Java的,没办法,只能自己转换了,思路就是将SDK的接口封装一下,然后打包成动态链接库dll让Java调用,之间的联系可以用JNI或者JNA,JNI偏向底层,设置很繁琐但是性能较高,JNA是基于JNI封装的一个库,使用非常简单,这次就用JNA来调用dll。          附上JNA的地址:https:...

lolzhzhzh的博客 1万+

基于C#的软PLC梯形图编辑器开发实战

本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。

weixin_28314575的博客 404

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2158

JNI 的数据类型以及和Java层之间的数据转换

JNI 的数据类型以及和Java层之间的数据转换。

川峰的博客 1801

5、基于模型的系统工程(MBSE)全面解析

本文全面解析了基于模型的系统工程(MBSE),介绍了模型在系统工程中的核心地位,以及如何通过视图和符号表示法实现信息的可视化。文章还详细阐述了MBSE的方法构成,包括框架(本体和视图点)和流程集,探讨了MBSE的实施流程、关键要素、应用策略以及未来发展趋势。通过合理应用MBSE,组织可以提高系统开发的效率和质量,降低成本与风险,实现成功部署。

nft7creator的博客 127

C#笔记14 方法01

C#笔记14 方法01 ——本系列是基于人民邮电出版社《C#2008 C#图解教程》、清华大学出版社《C#入门经典(第五版)》两本书的自学C#笔记,如果您发现了本文的纰漏,还望不吝指正。 写在前边 在 C#笔记10 类:基础 中,我们已经知道,方法是类中重要的一个函数成员 除了类中,方法也可以声明在结构体,接口中 *复习:方法是具有名称的可执行代码块,当方法被调用时,它执行自己所含的代码,然后返回到调用它的代码。有些方法返回一个值到它们被调用的位置。 1. 方法的结构 在类的相关笔记中,我们已经知道了如何声

Tervor_HAN的博客 765

152:vue+leaflet 判断一个点是否在一个电子围栏内

本文介绍了一个基于Vue+Leaflet的示例,演示如何判断点是否在电子围栏内。作者大剑师兰特(优快云知名博主)展示了使用polygon.getBounds().contains(latlng)方法检测点与多边形边界的关系。代码仅需80行,通过点击地图触发判断逻辑,结果显示提示信息。该技术可广泛应用于地理围栏、位置服务等场景,需要安装turf依赖。文章提供了完整源码和配置说明,适合GIS开发者学习参考。

大剑师兰特的GIS世界 756

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1382

02 jni基本变量与转换

基本类型的 java 与 c 对照图 Java 类型 本地 C 类型 实际表示的 C 类型 (Win32) 说明 boolean jboolean unsigned char 无符号,8 位 byte jbyte signed char 有符号,8 位 char jchar unsigned short...

studyforelectronics的博客 649

ECU诊断功能测试:从理论到实践

ECU诊断功能是指通过特定的诊断协议与ECU进行通信,以获取ECU的状态信息、故障码、数据流等,并执行特定的诊断操作。诊断功能的主要目的是帮助开发人员和维修人员快速定位和解决ECU中的问题,确保车辆的安全性和可靠性。UDS协议是ISO 14229标准的一部分,定义了一系列的诊断服务,如读取故障码、清除故障码、读取数据流等。UDS协议基于CAN(Controller Area Network)总线,具有较高的灵活性和扩展性。读取故障码是诊断功能中最基本的操作之一。通过读取故障码,可以快速定位ECU中的问题。

闲人编程的博客 1807

jni+java数据类型映射_JNI系列(四)JAVA数据类型和JNI类型对照表

因为Java语言与C/C++语言数据类型的不匹配,须要单独定义一系列的数据类型转换关系来完成二者之间的对等(或者说是映射)。下面给出jni与Java数据类型对应表(jni类型均被定义在jni.h头文件中),以下表1和表2,在jni函数中,须要使用如下jni类型来等价与Java语言对应的类型。java java的基本类型能够直接与C/C++的基本类型映射在jin.h头文件中有以下定义:数组# inc...

weixin_33681937的博客 594

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JNI数据类型及Java使用jni调用c++接口

基本数据类型可以进行直接使用,不需要进行互相转换。比如:int、float、double、boolean。使用枚举时记得在使用的地方添加自己定义的枚举的头文件。C++数据与Java数据转换参考下面《选中c++项目点击鼠标右键 > 属性。转Java double[]1.选中C++项目鼠标右键。这里选择生成对应的动态库。

sipengfei_的博客 935

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JNI - JAVA 数据类型转换

基本数据类型转换 在 Java 中传递的参数类型是 int,而在 JNI 中就成了 jint,这就涉及到 Java 到 JNI 的数据类型转换。 Java 类型 Native 类型 字节长度 boolean jboolean 8位 byte jbyte 8位 char jchar 16位 short jshort 16位 int jnit 32位 long jlong 64位 float jfloat 32位 double jdouble 64位 ...

TLuffy的博客 3156

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[NDK/JNI系列02] JNI的设计原理与数据类型

学习JNI规范,包括数据类型、函数签名、命名规则等。

我其实什么都不会 6472

JNI编程二:JNI数据类型

JNI编程二:JNI数据类型

似霰的博客 1095

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

人间观察 人只有不为生存而烦恼的时候,才会追求真正想要的东西。 在前面的几篇文章中有涉及到Java和JNI的通信,比如异常回调,Java和JNI的互相调用等。其中都免不了在通信过程中需要知道Java基本数据类型,引用类型和JNI的对应关系以及基本数据类型,引用类型的类型描述符,才能够通信和使用。 这个是很重要的,是基础,有必要单独来记录下。 在 JNI 开发中,Java 的数据类型并不是直接在 JNI 里使用的,例如 int 就在JNI中是使用 jint 来表示的。 数据类型对应 基本数据类型: Jav.

顾修忠的博客 544

jni参数类型对照表

JNI规范定义的函数签名信息格式如下: (参数1类型标示参数2类型标示......参数n类型标示)返回值类型标示 实际上这些字符是与函数的参数类型一一对应的。 “()” 中的字符表示参数,后面的则代表返回值。例如”()V” 就表示 void Func(); “(II)V” 表示 void Func(int, int); 值得注意的一点是,当参数类型是引用数据类型时, 其格式是“L包名;

zq5599966_xy的专栏 1794

java jni 数据类型_java JNI数据类型对照表

1.了解JNI中JAVA类型与C/C++的映射关系JAVA类型本地类型JNI中自定义类型描述intlongjint/jsizesigned 32 bitslong_int64jlongsigned 64 bitsbytesigned charjbytesigned 8 bitsbooleanunsigned charjbooleanunsigned 8 bitscharunsigned short...

weixin_35747299的博客 475

JNI基本数据类型对照

1.了解JNI中JAVA类型与C/C++的映射关系 JAVA类型 本地类型 JNI中自定义类型 描述 int long jint/jsize signed 32 bits long _int64 jlong signed 64 bits byte signed char jbyte

Recording... 6088

JNI基础:JNI数据类型和类型描述符

一、简介 在 JNI 开发中,我们知道,Java 的数据类型并不是直接在 JNI 里使用的,例如 int 就是使用 jint 来表示。 那么,就如我们来认识一下这些数据类型吧。 二、基本数据类型 Java数据类型 JNI本地类型 C/C++数据类型 数据类型描述 boolean jboolean unsigned char ...

android开发笔记 1239

JNI数据类型

JNI数据类型 java中有两种数据类型: 基本数据类型:布尔、字节、字符、短整、整型、长整、浮点、双精度 引用类型:字符串类、数组类及其他类 基本数据类型 基本数据类型可以直接与c/c++的相应基本数据类型映射 引用类型 与基本数据类型不同,引用类型对原生方法是不透明的, Java类型 本地类型 描述 boolean jboolean C/C++8位整型 byte jbyte C/C++带符号的8位整型 char jchar C/C++无符号的16位整型 short

随风的博客 1587

JNI 编程指南2——JNI 数据类型

JNI数据类型与转换 本文介绍了JNI(Java Native Interface)程序中的数据类型及其转换方法。主要内容包括: 数据类型分类: Java类型 JNI类型 C/C++类型 JNI程序需要在三种类型间进行转换 基本数据类型: 表格列出了boolean、byte、char等基本类型在三种语言中的对应关系 这些类型可直接在JNI中使用,无需转换 引用类型: 详细说明了Object、String、Class等引用类型的JNI对应类型 提供了完整的引用类型对照表 类型转换示例: 基本类型转换:直接使用

似霰的博客 764

JNI数据类型转换

经典老套流程,学编程语言东西,先学它最基础的数据类型,JNI也是如此。JNI 定义了一系列基本数据类型和引用数据类型与java想对应。   1、基本数据类型 下面一张表是描述了 Java 基本数据类型和JNI中基本数据类型的相对应关系已经占用空间大小。 随便观察就能发现,其实就基本数据类型而已,JNI基本数据类型只是比Java基本数据类型前多了个’j’而已 当然,JNI中还有

iop15017515365的博客 1609
上一篇: JNI系列(二)Java代码通过JNI与C++代码通信
下一篇: JNI系列(三)C++代码通过JNI调用Java代码
码农致富
码农致富 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄13年 3763粉丝 488原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值