引用类型被对于本地代码的引用是模糊的而不是本地数据类型,和并不能被使用和修改。JNI提供了一套API来这些引用类型的沟通。这些API被提供者本地功能通过JNIEnv的接口指针。在这部分,你讲简明浏览这些APIs部分对于接下来类型和组件:

String操作

由Java的String有JNI作为引用类型处理。这些引用不能作为本地C的String类型来直接使用。JNI提供者必要的功能来转化Java String引用到c字符串类型。尽管Java string对象是不变,JNI并不提供任何功能来修改一个存在Java string的内容。

JNI支持Unicode和UTF-8编码的字符串,和它提供两套函数通过JNIEnv接口指针来处理这些字符串编码的处理。

新建字符串

对于Unicode编码的字符串通过使用NewString函数和UTF-8字符通过使用NewStringUTF来构造新的字符串实例。

jstring javaString;
javaString = (*env)->NewStringUTF(env, "Hello World!");

转化一个Java String到C String

在本地为了使用一个Java string需要把它转化为C String类型,对于UNIcode的字符串使用getstringchars和对于utf-8的字符串使用getstringutfchars。

const jbyte* str;
jboolean isCopy;
str = (*env)->GetStringUTFChars(env, javaString, &isCopy);
if (0 != str) {
printf("Java string: %s", str);
if (JNI_TRUE == isCopy) {
printf("C string is a copy of the Java string.");
} else {
printf("C string points to actual string.");
}

对于获得字符串需要提供相应的ReleaseStringChars和ReleaseStringUTFChars来释放C string。

引用类型String的操作相关推荐

  1. string截取某个字符串之前的_python String字符串操作

    今天学习python的String字符串操作,并记录学习过程欢迎大家一起交流分享. 首先新建一个python文件命名为py3_string.py,在这个文件中进行字符串操作代码编写(如下为代码,文后有 ...

  2. JVM学习笔记之-StringTable String的基本特性,内存分配,基本操作,拼接操作,intern()的使用,垃圾回收 ,G1中的String去重操作

    String的基本特性 string:字符串,使用一对""引起来表示. String s1 = ""; //字面量的定义方式 String s2 = new S ...

  3. C#字符串(String)操作

    简单介绍:如梦惊呼!想到这里,吴长青鳖红着脸道!誓不为人:内力深厚是一个高手的标准!是白蝴蝶?杨晓枫还是强迫自 本文写于:2012年09月30日;福州到千岛湖自驾游 计划:如梦惊呼!想到这里,吴长青鳖 ...

  4. Swift5 字符串(String)操作

    Swift5 字符串(String)操作 Swift字符串创建 Swift字符串拼接 Swift字符串追加 Swift字符串格式化 Swift获取字符串长度 Swift判断字符串是否为空 Swift遍 ...

  5. 05引用类型以及特殊引用类型string

    基本 □ 哪些属于引用类型 类(object,string),接口.数组.委托 □ 引用类型分配在哪里 ● 引用类型变量位于线程栈. ● 引用类型实例分配在托管堆上. ● 当引用类型实例的大小小于85 ...

  6. Go 学习笔记(60)— Go 第三方库之 go-redis(初始化 redis、操作 string、操作 list、操作 set、操作 hset)

    1. 第三方库 go-redis 因为 Go 标准库中是没提供 redis 的库,所以我们选择用 go-redis 这个第三方库.源码地址为 https://github.com/go-redis/r ...

  7. python中string的操作函数

    在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专门的string的module,要使用string的方法 ...

  8. String常用操作,StringBuffer。

    一.String类的常用操作 1.创建String字符串 String str = new String("我们爱学习"); String str1 = "我们不爱学习& ...

  9. (010) java后台开发之String字符串操作

    转自: https://course.tianmaying.com/java-basic+string#1 先看一个例子: String str1; String str2 = "" ...

最新文章

  1. 解决eclipse报PermGen space异常的问题
  2. 转sql exists和not exists用法
  3. 由“求最大公约数“引发的思考
  4. 让zabbix图像中文不再是乱码
  5. 前端小白,如何快速提升自己?了解3点,找工作不用愁
  6. Editplus配置VC++(1) 及相关注意事项
  7. cadence 常见pcb电阻_不加端接电阻的快乐,你们绝对想象不到!
  8. meanShift算法用于目标跟踪的优缺点
  9. matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
  10. gbq6什么软件能打开_GBQ5是啥文件,用哪个软件打开
  11. html中css鼠标手势样式,CSS鼠标手势
  12. pubg微信登录服务器维护,全军出击微信登录不了怎么办
  13. Android OpenCV竖屏处理策略和底层代码修改
  14. 脚手架的安装及配置过程
  15. 在ubuntu下安装韦诺之战(一款好玩策略游戏)
  16. 太棒了,Github 上面星标10K+ 的阿里巴巴社招面试感悟!(附海量面试复习资料)
  17. Linux新建分区值超出范围,关于安装Linux (FC6)频率超出范围与显卡驱动
  18. 国家信息安全等级考试NISP一级题库(1)第1至100题
  19. 百度网盘在线不限速下载网站源码
  20. java 时间差 long,java计算时间差及比较时间大小

热门文章

  1. linux使用权限模式启动mongodb,Linux安装MongoDB启动及常见问题解决
  2. [数据库] Navicat for Oracle设置唯一性和递增序列实验
  3. [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例
  4. C# 基础知识 (五).变量类型和字符串处理
  5. 【数据结构与算法】之深入解析“二叉树的最小深度”的求解思路与算法示例
  6. 546. Remove Boxes 移除盒子
  7. 11.1.2 DOM
  8. 2017年第八届蓝桥杯 - 国赛 - C/C++大学B组 - A. 36进制
  9. 【Java12】tomcatservlet(nginx,web.xml,生命周期,适配器优化),requestresponse(请求转发,登陆案例(1),重定向,文件下载)
  10. 【机器视觉】 fuzzy_measure_pairing算子