Android JNI開發系列(五)Java與JNI數據類型 原

具體的每一個字符的對應關係如下

字符JAVA類型C類型
Vvoidvoid
Zjbooleanboolean
Ijintint
Jjlonglong
Djdoubledouble
Fjfloatfloat
Bjbytebyte
Cjcharchar
Sjshortshort
[IjintArrayint[]
[FjfloatArrayfloat[]
[BjbyteArraybyte[]
[CjcharArraychar[]
[SjshortArrayshort[]
[DjdoubleArraydouble[]
[JjlongArraylong[]
[ZjbooleanArrayboolean[]
  • Code

public native int add(int a, int b);

public native int sub(int a, int b);

public native double mulit(double a, double b);

public native long divi(long a, long b);

public native char getChar(char a);

public native byte sqrt(byte a);

public native float power(float a);

public native boolean isBoolean(boolean a);

//
// Created by Peng Cai on 2018/9/29.
//
#include <jni.h>
#include <android/log.h>
#include <math.h>

extern "C"  // C 編譯器編譯我的代碼

JNIEXPORT jint JNICALL
Java_org_professor_jni_MainActivity_sub(JNIEnv *env, jobject instance, jint a, jint b) {
    return a - b;
}

JNIEXPORT jdouble JNICALL
Java_org_professor_jni_MainActivity_mulit(JNIEnv *env, jobject instance, jdouble a, jdouble b) {

    return a * b;
}

JNIEXPORT jlong JNICALL
Java_org_professor_jni_MainActivity_divi(JNIEnv *env, jobject instance, jlong a, jlong b) {
    return a / b;
}

JNIEXPORT jchar JNICALL
Java_org_professor_jni_MainActivity_getChar(JNIEnv *env, jobject instance, jchar a) {
    return (jchar) (a + 3);
}

JNIEXPORT jbyte JNICALL
Java_org_professor_jni_MainActivity_sqrt(JNIEnv *env, jobject instance, jbyte a) {

    return (jbyte) sqrt(a);

}

JNIEXPORT jboolean JNICALL
Java_org_professor_jni_MainActivity_isBoolean(JNIEnv *env, jobject instance, jboolean a) {
    return a;
}

JNIEXPORT jfloat JNICALL
Java_org_professor_jni_MainActivity_power(JNIEnv *env, jobject instance, jfloat a) {
    return a * a;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章