JNI實現字符串的轉置

聲明一個Java native方法

/**
  * @param param 待轉置的字符串。
  * @return 轉置後的字符串。
  */
public static native String reverseStr(String param);

生成一個native C方法聲明

JNIEXPORT jstring JNICALL Java_____reverseStr(JNIEnv *, jclass, jstring);

實現native C方法

JNIEXPORT jstring JNICALL Java_____reverseStr(JNIEnv *env, jclass jc, jstring p) {
    jsize js = (*env)->GetStringLength(env, p);
    const jchar *jch = (*env)->GetStringChars(env, p, NULL);
    jsize j = 0, i = js - 1;
    jchar jch_tmp_1[js];
    for (; j < js; ++j, --i) {
        jch_tmp_1[j] = jch[i];
    }
    (*env)->ReleaseStringChars(env, p, jch);
    return (*env)->NewString(env, jch_tmp_1, js);
}

此處重點放在本地方法的實現中。

測試

System.out.println(reverseStr("!anihC uoy evol I!國中你愛我"));
2020-04-14 22:42:55.257 1106-1106/I/System.out: 我愛你中國!I love you China!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章