Skip to content

Latest commit

 

History

History
52 lines (46 loc) · 1.98 KB

3.1.md

File metadata and controls

52 lines (46 loc) · 1.98 KB
//java类型	Native类型	符号属性	字长
//boolean	jboolean	无符号	8位
//byte	jbyte	有符号	8位
//char	jchar	无符号	16位
//short	jshort	有符号	16位
//int	jint	有符号	32位
//long	jlong	有符号	64位
//float	jfloat	有符号	32位
//double	jdouble	有符号	64位


//java类型	                      Native类型
// ALL Object                     jobject
//java.lang.Class	              jclass
//java.lang.Throwable	          jthrowable
//java.lang.String	              jstring
//java.lang.Object[]	          jobjectArray
//Boolean[]	                      jbooleanArray
//Byte[]	                      jbyteArray
//Char[]	                      jcharArray
//Short[]	                      jshortArray
//int[]	                          jintArray
//long[]	                      jlongArray
//float[]	                      jfloatArray
//double[]	                      jdoubleArray


#include <jni.h>
#include <base.h>
#include <cstdio>

extern "C"
JNIEXPORT jstring JNICALL
Java_com_jdqm_ndktutorials_jni_JNIReferenceType_callNativeStringArray(JNIEnv *env, jobject thiz,
                                                                      jobjectArray str_array) {

    int len = env->GetArrayLength(str_array); //这个方法对于所有的数组都是公用的
    LOGD("len is %d ", len);
    jstring firstStr = static_cast<jstring>(env->GetObjectArrayElement(str_array, 0));//拿到对象数组的首元素
//    const char* str:
//    意义:确保*str的内容不会改变,也就是用str这个指针无法改变str这个指针指向的地址的内容,
//    但是可以改变这个指针
//    char const str和const charstr含义一样
//    char* const str:
//    意义:确保str这个指针不会改变,但是这个指针里面的内容可以改变。
    const char *str = env->GetStringUTFChars(firstStr, 0);
    LOGD("len is %s ", str);
    env->ReleaseStringUTFChars(firstStr, str);
    return env->NewStringUTF(str);
}