引用类型String的操作
引用类型被对于本地代码的引用是模糊的而不是本地数据类型,和并不能被使用和修改。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的操作相关推荐
- string截取某个字符串之前的_python String字符串操作
今天学习python的String字符串操作,并记录学习过程欢迎大家一起交流分享. 首先新建一个python文件命名为py3_string.py,在这个文件中进行字符串操作代码编写(如下为代码,文后有 ...
- JVM学习笔记之-StringTable String的基本特性,内存分配,基本操作,拼接操作,intern()的使用,垃圾回收 ,G1中的String去重操作
String的基本特性 string:字符串,使用一对""引起来表示. String s1 = ""; //字面量的定义方式 String s2 = new S ...
- C#字符串(String)操作
简单介绍:如梦惊呼!想到这里,吴长青鳖红着脸道!誓不为人:内力深厚是一个高手的标准!是白蝴蝶?杨晓枫还是强迫自 本文写于:2012年09月30日;福州到千岛湖自驾游 计划:如梦惊呼!想到这里,吴长青鳖 ...
- Swift5 字符串(String)操作
Swift5 字符串(String)操作 Swift字符串创建 Swift字符串拼接 Swift字符串追加 Swift字符串格式化 Swift获取字符串长度 Swift判断字符串是否为空 Swift遍 ...
- 05引用类型以及特殊引用类型string
基本 □ 哪些属于引用类型 类(object,string),接口.数组.委托 □ 引用类型分配在哪里 ● 引用类型变量位于线程栈. ● 引用类型实例分配在托管堆上. ● 当引用类型实例的大小小于85 ...
- Go 学习笔记(60)— Go 第三方库之 go-redis(初始化 redis、操作 string、操作 list、操作 set、操作 hset)
1. 第三方库 go-redis 因为 Go 标准库中是没提供 redis 的库,所以我们选择用 go-redis 这个第三方库.源码地址为 https://github.com/go-redis/r ...
- python中string的操作函数
在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专门的string的module,要使用string的方法 ...
- String常用操作,StringBuffer。
一.String类的常用操作 1.创建String字符串 String str = new String("我们爱学习"); String str1 = "我们不爱学习& ...
- (010) java后台开发之String字符串操作
转自: https://course.tianmaying.com/java-basic+string#1 先看一个例子: String str1; String str2 = "" ...
最新文章
- 解决eclipse报PermGen space异常的问题
- 转sql exists和not exists用法
- 由“求最大公约数“引发的思考
- 让zabbix图像中文不再是乱码
- 前端小白,如何快速提升自己?了解3点,找工作不用愁
- Editplus配置VC++(1) 及相关注意事项
- cadence 常见pcb电阻_不加端接电阻的快乐,你们绝对想象不到!
- meanShift算法用于目标跟踪的优缺点
- matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
- gbq6什么软件能打开_GBQ5是啥文件,用哪个软件打开
- html中css鼠标手势样式,CSS鼠标手势
- pubg微信登录服务器维护,全军出击微信登录不了怎么办
- Android OpenCV竖屏处理策略和底层代码修改
- 脚手架的安装及配置过程
- 在ubuntu下安装韦诺之战(一款好玩策略游戏)
- 太棒了,Github 上面星标10K+ 的阿里巴巴社招面试感悟!(附海量面试复习资料)
- Linux新建分区值超出范围,关于安装Linux (FC6)频率超出范围与显卡驱动
- 国家信息安全等级考试NISP一级题库(1)第1至100题
- 百度网盘在线不限速下载网站源码
- java 时间差 long,java计算时间差及比较时间大小
热门文章
- linux使用权限模式启动mongodb,Linux安装MongoDB启动及常见问题解决
- [数据库] Navicat for Oracle设置唯一性和递增序列实验
- [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例
- C# 基础知识 (五).变量类型和字符串处理
- 【数据结构与算法】之深入解析“二叉树的最小深度”的求解思路与算法示例
- 546. Remove Boxes 移除盒子
- 11.1.2 DOM
- 2017年第八届蓝桥杯 - 国赛 - C/C++大学B组 - A. 36进制
- 【Java12】tomcatservlet(nginx,web.xml,生命周期,适配器优化),requestresponse(请求转发,登陆案例(1),重定向,文件下载)
- 【机器视觉】 fuzzy_measure_pairing算子