混合编程jni 第六篇之native 中字符串和数组的操作

Posted 香菜聊游戏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合编程jni 第六篇之native 中字符串和数组的操作相关的知识,希望对你有一定的参考价值。

 系列目录:【混合编程Jni】 系列目录_香菜聊游戏的博客-CSDN博客

继续JNI的知识点,今天看下字符串和数组的一些操作

这两个是比较特殊的存在

字符串操作

编码格式

Java默认使用Unicode编码,C/C++默认使用UTF编码

在本地代码中操作字符串的时候,JNI支持字符串在Unicode和UTF-8两种编码之间转换。

GetStringUTFChars能够把一个jstring指针(指向JVM内部的Unicode字符序列)转换成一个UTF-8格式的C字符串。

访问字符串

一般来说,在从JVM内部获取一个字符串之后。

JVM内部会分配一块新的内存,拷贝原来的字符串,以便本地代码访问和改动。

即然有内存分配。在使用完之后就应该释放。

ReleaseStringUTFChars()和GetStringUTFChars()必须成对出现,用来释放内存和引用,使对象可以被GC回收。

创建字符串

调用NewStringUTF函数会构建一个新的java.lang.String字符串对象。

JVM不能分配足够的内存,NewStringUTF会抛出一个OutOfMemoryError异常,并返回NULL

下面是一套连招

jstring NewStringUTF(JNIEnv *env

以上是关于混合编程jni 第六篇之native 中字符串和数组的操作的主要内容,如果未能解决你的问题,请参考以下文章

混合编程jni 第十篇之JNA初见

混合编程jni 第十一篇之JNA详情

混合编程jni 第十篇之JNA初见

混合编程jni 第四篇之引用和异常

混合编程jni 第十一篇之JNA详情

混合编程jni 第四篇之引用和异常