前言
正文
- public class Hello {
- static {
- System.loadLibrary("Hello");
- }
- // JNI中对数组排序
- public static native int[] sortInt(int [] buffer);
- // JNI创建数组
- public static native int [] newIntArray();
- }
还在在之前的基础改,这里只附上部分代码
- JNINativeMethod method_table[] = {
- {"sortInt", "([I)[I", (void *) native_sort_int},
- {"newIntArray", "()[I", (void *) native_new_Int_Array},
- };
sortInt
- JNIEXPORT jintArray
- JNICALL native_sort_int(JNIEnv *env, jclass jclazz, jintArray buffer) {
- //获取Java数组长度
- int length = env->GetArrayLength(buffer);
- LOGD("native_sort_int length : %d", length);
- //转换为指针
- int *arrayP = env->GetIntArrayElements(buffer, NULL);
- int i = 0;
- int j = 0;
- int temp = 0;
- //排序从大到小
- for (i = 0; i < length - 1; i++) {
- for (j = i + 1; j < length; j++) {
- if (arrayP[i] < arrayP[j]) {
- temp = arrayP[i];
- arrayP[i] = arrayP[j];
- arrayP[j] = temp;
- }
- }
- }
- //转化为jintArray
- //env->SetIntArrayRegion(buffer, 0, length, arrayP);
- //把修改写回原数组并且释放本地数组
- env->ReleaseIntArrayElements(buffer, arrayP, 0);
- return buffer;
- }
newIntArray
- JNIEXPORT jintArray
- JNICALL native_new_Int_Array(JNIEnv *env, jclass jclazz) {
- int num = 10;
- // 1. 创建一个Java的int数组
- jintArray array = env->NewIntArray(num);
- // 2. 获取数组指针
- jint *arrayP = env->GetIntArrayElements(array, NULL);
- // 3. 初始化
- int i = 0;
- for (; i < num; i++) {
- arrayP[i] = i;
- }
- // 4. 把修改写回原数组并且释放本地数组
- env->ReleaseIntArrayElements(array, arrayP, 0);
- return array;
- }
参考文章
《》
《》
《》
历史上的今天
© 版权声明