JNI系列文章:java
即上一篇JNI系列之入门Hello JNI C(一)简单介绍后,这篇将详细讲解C中的全部代码。c++
/* * Class: com_jerry_jnitest_JniTest * Method: getStringFromC * Signature: ()Ljava/lang/String; */
JNIEXPORT jstring JNICALL Java_com_jerry_jnitest_JniTest_getStringFromC (JNIEnv *, jclass);
复制代码
public native static String getStringFromC();
复制代码
public native String getStringOfC(String input);
复制代码
那就变成了:数组
JNIEXPORT jstring JNICALL Java_com_jerry_jnitest_JniTest_getStringOfC (JNIEnv *env, jobject jobj, jstring jstr){
}
复制代码
这里面jobject标示这个native方法是调用它的对象,第三个参数jstring就是java方法中String input这个参数。 从上文能够看出,jxxxx的都会对应Java中的一种数据类型。函数
下面是Java的数据类型与JNI的数据类型的映射关系:post
Java数据类型 | Jni数据类型 | C数据类型 |
---|---|---|
基础数据类型 | ||
void | void | void |
boolean | jboolean | unsigned char |
byte | jbyte | signed char |
char | jchar | char |
short | jshort | short |
int | jint | int |
long | jlong | __int64(long long) |
float | jfloat | float |
double | jdouble | double |
引用数据类型 | ||
String | jstring (jobject的别名) | struct _jobject* |
Object | jobject | struct _jobject* |
基本数据类型的数组 | ||
blooean[] | jbooleanArray 1. jbooleanArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
byte[] | jbyteArray 1. jbyteArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
char[] | jcharArray 1. jcharArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
short[] | jshortArray 1. jshortArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
int[] | jintArray 1. jintArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
long[] | jlongArray 1. jlongArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
float[] | jfloatArray 1. jfloatArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
double[] | jdoubleArray 1. jdoubleArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
引用数据类型数组 | ||
Object[] | jobjectArray 1. jobjectArray是jarray的别名 2. jarray又是jobject的别名 |
struct _jobject * |
JNI系列文章:this