引用类型被对于本地代码的引用是模糊的而不是本地数据类型,和并不能被使用和修改。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. BannerDemo【图片轮播图控件】
  2. 共识算法的比较:Casper vs Tendermint
  3. hibernate 继承_Hibernate继承:每个类层次结构的表
  4. 转:PHP应用性能优化指南
  5. 左右伸缩_冬季装修为啥要留伸缩缝?等到天热地板开裂就晚了!合肥人注意下...
  6. 关于如何在ASP.NET 2.0中定制Expression Builders
  7. Ubuntu调整CPU程序调度和CPU频率的几种方法
  8. BZOJ 4241 历史研究
  9. html表格如何创建搜索,6.如何创建HTML表格
  10. python刷新cdn_使用Python解析阿里云CDN日志
  11. 全球及中国游戏耳机市场运营模式分析及需求前景预测报告2022年版
  12. 实体服务器搭建vps系统,vps系统和云服务器搭建
  13. AT24C04C/08C 中关于写保护WP的使用说明
  14. js产品360度旋转预览图片插件
  15. python使用 tkinter + you-get 实现视频下载器以及 pyinstaller 打包时的问题
  16. 华三交换机irf 堆叠配置_交换机的堆叠配置
  17. ADB:通过 Wi-Fi 连接到Android设备的两种方法
  18. 手机网页唤起uniapp
  19. TCP fairness 前置
  20. 看高手如何玩弄QQ上的骗子!

热门文章

  1. [python学习] 简单爬取图片网站图库中图片
  2. Git之深入解析在没有合适的网络或者可共享仓库情况下的git bundle打包操作
  3. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - B. 矩形切割
  4. 传阿里旗下蚂蚁集团拟上市集资300亿美元,最快9月IPO
  5. python2.7 跨文件全局变量的方法
  6. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第三题:埃及分数
  7. PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
  8. 1031:反向输出一个三位数
  9. 【ARM】ARM汇编程序设计(六) stm和ldm
  10. 深度linux引导安装,全程演示Linux Deepin 12.06安装过程