JNI学习(3)(我是菜鸟)-jstring介绍
来源:互联网 发布:idea设置网络 编辑:程序博客网 时间:2024/06/06 07:52
所有内容为记录学习过程,不是大牛敬请谅解。所有分析都参考深入理解Android 卷一
Java中的String 也是引用类型,不过由于它的使用频率有点高,所以再JNI 规范中,单独创建了一个 jstring 类型表示java中的String类型,虽然jstring 是一种独立的数据类型,但是它并没有提供成员函数以便操作,而C++中的string 类有自己的成员哈数,那么操作jstring的过程,不用多说应该是保存在那个JNIEnv中了。
以下介绍几个jstring的函数
1,调用JNIEnv的NewString(JNIEnv *env,const jchar *unicodeChars,jsize len),可以从Native的字符串中得到一个jstring对象,其实可以把这个jstring对象看成java中的String对象在JNI层的代表,也就是说jstring就是一个Java String。但是由于java String存储的是Unicode字符串,所以NewString函数的参数也必须是Unicode字符串
调用JNIEnv 的NewStringUTF将根据Native的一个UTF-8字符串得到一个jstring对象。
上面两个函数将本地字符转换成了java的String对象,JNIEnv还提供了GetStringChars加盟手机进而GetStromgUFTChars函数,他们可以将JavaString对象转换成本地字符串,其中GetStringChars得到一个Unicode字符串,GetStringUTFChars的到一个UTF-8字符串。
如果调用了上面几个函数,做完相关工作后,就需要调用ReleaseStringChars函数,或者ReleaseStringUTFChars 函数来对应的释放资源,否则可能会导致JNI内存泄露。这个问题需要特别注意
来个示例
- JNI学习(3)(我是菜鸟)-jstring介绍
- JNI学习(2)(我是菜鸟)-JNIEnv介绍
- JNI学习(1)(我是菜鸟)
- JNI学习(5)(我是菜鸟)
- JNI学习(6)(我是菜鸟)
- JNI学习(4)(我是菜鸟)-JNI类型签名
- JNI jstring
- 我是菜鸟,学习中
- JNI 入门介绍(jstring与char*的转换)
- JNI 入门介绍(jstring与char*的转换)
- JNI 入门介绍(jstring与char*的转换)
- JNI 入门介绍(jstring与char*的转换)
- JNI中jstring操作
- JNI数据类型转换和JNIEnv的介绍、操作jobject,以及jstring的介绍
- win7第一个JNI程序(我是菜鸟)
- JNI unicode jstring to char*
- JNI unicode jstring to char*
- jni converting jstring to char *
- 黑马程序员:IO 学习<二>
- 判断圆是否被若干圆包围的问题--厦大1046
- java中,char类型能否存一个汉字。
- Java对泛型的支持(二)- 高级语法
- 硬件实现和可编程理解
- JNI学习(3)(我是菜鸟)-jstring介绍
- C语言中枚举类型作为函数入参的陷阱
- oracle-timestamp类型处理
- 写得蛮好的linux学习笔记(主要是linux shell命令)
- 如何检查服务器中的响应是JSONAobject还是JSONArray?
- android学习—— Android导入源代码出现Remove @Override问题解决方法 .
- Spring2.5的Autowired
- 我的第一个Air For iOS 小游戏 ---- 《PopMoon》,作一下记录;
- new JSONObject()不执行 不报错 解决方法