jstring NewStringUTF (JNIEnv *env, const char *bytes); 功能:利用 UTF-8 字符数组构造新 java.lang.String 对象。 参数: env:JNI 接口指针。如果无法构造该字符串,则为 NULL。 bytes:指向 UTF-8 字符串的指针。
返回值:Java 字符串对象。如果无法构造该字符串,则为NULL。 抛出: OutOfMemoryError:如果系统内存不足。
jsize GetStringUTFLength (JNIEnv *env, jstring string); 功能:以字节为单位返回字符串的 UTF-8 长度。 参数: env:JNI 接口指针。 string:Java 字符串对象。 返回值: 返回字符串的 UTF-8
const char* GetStringUTFChars (JNIEnv*env, jstring string, jboolean *isCopy);
功能:返回指向字符串的 UTF-8 字符数组的指针。该数组在被
ReleaseStringUTFChars() 释放前将一直有效。如果 isCopy不是 NULL,*isCopy 在复制完成后即被设为 JNI_TRUE。如果未复制,则设为JNI_FALSE。
参数: env:JNI 接口指针。 string:Java 字符串对象。 isCopy:指向布尔值的指针。
返回值: 指向 UTF-8 字符串的指针。如果操作失败,则为 NULL。
void ReleaseStringUTFChars (JNIEnv *env, jstring string, const char *utf);
功能:通知虚拟机平台相关代码无需再访问 utf。utf 参数是一个指针,可利用 GetStringUTFChars() 获得。 参数: env:JNI 接口指针。 string:Java 字符串对象。 utf:指向 UTF-8 字符串的指针。
////////////////////////////////////////////////////////////////////////////////////////////////////////////// 六、数组操作
jsize GetArrayLength (JNIEnv *env, jarray array); 功能:返回数组中的元素数。 参数:env:JNI 接口指针。 array:Java 数组对象。 返回值: 数组的长度。
jarray NewObjectArray (JNIEnv *env, jsize length, jclass elementClass, jobject initialElement);
功能:构造新的数组,它将保存类 elementClass 中的对象。所有元素初始值均设为 initialElement。 参数: env:JNI 接口指针。 length:数组大小。
elementClass:数组元素类。
initialElement:初始值。可以为NULL 。
返回值:Java 数组对象。如果无法构造数组,则为 NULL。 抛出: OutOfMemoryError:如果系统内存不足。
说明: 使用该函数时,为了便于易操作性,我们一般可以用jobjectArray数组类型或得返回值,例如:
jobjectArray objArray = env->NewObjectArray ( );//操作该对象 env->GetObjectArrayElement (objArray, 0);//获得该object数组在索引0处的值 ,(可以强制转换类型).
jobject GetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index);
功能:返回 Object 数组的元素。 参数: env:JNI 接口指针。 array:Java 数组。 index:数组下标。 返回值: Java 对象。
抛出: ArrayIndexOutOfBoundsException:如果 index 不是数组中的有效下标。
void SetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index, jobject value);
功能:设置 Object 数组的元素。 参数: env:JNI 接口指针。
array:Java 数组。 index:数组下标。 value:新值。
抛出: ArrayIndexOutOfBoundsException:如果 index 不是数组中的有效下标。
ArrayStoreException:如果 value 的类不是数组元素类的子类。
New
NativeType New
说明: 用于构造新基本类型数组对象的一系列操作。下表说明了特定的基本类型数组构造函数。用户应把
New
参数: env : JNI 接口指针。 length:数组长度。
返回值: Java 数组。如果无法构造该数组,则为 NULL。
New
NewBooleanArray() jbooleanArray NewByteArray() jbyteArray
NewCharArray() jcharArray
NewShortArray() jshortArray NewIntArray() jintArray NewLongArray() jlongArray NewFloatArray() jfloatArray NewDoubleArray() jdoubleArray
Get
NativeType *Get
说明:一组返回基本类型数组体的函数。结果在调用相应的Release
由于返回的数组可能是 Java 数组的副本,因此对返回数组的更改不必在基本类型数组中反映出来,直到调用了
Release
将 Get
将 ArrayType 替换为对应的数组类型。
将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array:Java 字符串对象。