Android JNI ,jni基本数据类型转换

jstring转换为c string:

  1. GetStringUTFChars将jstring转换成为UTF-8格式的char*
  2. GetStringChars将jstring转换成为Unicode格式的char*
  3. ReleaseStringUTFChars释放指向UTF-8格式的char*的指针
  4. ReleaseStringChars释放指向Unicode格式的char*的指针
  5. NewStringUTF创建一个UTF-8格式的String对象
  6. NewString创建一个Unicode格式的String对象
  7. GetStringUTFLengt获取 UTF-8格式的char*的长度
  8. GetStringLength获取Unicode格式的char*的长度

注意:在使用完你所转换之后的对象之后,需要显示调用 ReleaseStringUTFChars方法,让JVM释放转换成UTF-8的string的对象的空间,如果不显示的调用的话,JVM中会一直保存 该对象,不会被垃圾回收器回收,因此就会导致内存溢出。

const char *str = (*env)->GetStringUTFChars(env, prompt, 0); 
printf("%s", str);
(*env)->ReleaseStringUTFChars(env, prompt, str);

原文地址:https://www.cnblogs.com/zhouchanwen/p/3382549.html