jni对java一维数组的方法比较实用的有几个
xxx具体用其他数据类型替换
byte对应char
java的char对应c++wchar
NewxxxArray新建java的一维数组
SetxxxArrayRegion用c++数组值赋值给java数组
GetArrayLength获取数组长度
GetIntArrayRegion用java数组值赋值给c++数组
public static native int[] getIntData();
public static native void show(int[] data);
我的建议是先把数据转成c++格式,处理完后直接复制给java数组,不要直接对java数组进行数据操作
JNIEXPORT jintArray JNICALL Java_JNITest_getIntData(JNIEnv *env, jclass thisObj){
int tmpData[7]={1,3,5,6,7,3,4};
//新建java数组
jintArray data = env->NewIntArray(7);
//把c++数组的值传给java数组
env->SetIntArrayRegion(data,0,7,(jint *)tmpData);
return data;
}
JNIEXPORT void JNICALL Java_JNITest_show___3I(JNIEnv *env, jclass thisObj, jintArray data){
//获取数组长度
int len=env->GetArrayLength(data);
int* cData=new int[len];
//把java数组的值赋值给c++数组
env->GetIntArrayRegion(data,0,len,(jint *)cData);
for(int i=0;i<len;i++){
cout<<cData[i];
}
delete[] cData;
}
对于获取数组指针,然后操作java数组的方法没有给出,因为效果不如先转换格式,然后按照一种规范操作好用