具體的每一個字符的對應關係如下
字符 | JAVA類型 | C類型 |
---|---|---|
V | void | void |
Z | jboolean | boolean |
I | jint | int |
J | jlong | long |
D | jdouble | double |
F | jfloat | float |
B | jbyte | byte |
C | jchar | char |
S | jshort | short |
[I | jintArray | int[] |
[F | jfloatArray | float[] |
[B | jbyteArray | byte[] |
[C | jcharArray | char[] |
[S | jshortArray | short[] |
[D | jdoubleArray | double[] |
[J | jlongArray | long[] |
[Z | jbooleanArray | boolean[] |
- 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;
}