Java中JNI的使用详解第三篇:传参之基本数据类型
2017-02-18 本文已影响0人
Mr_Ray
基本数据类型的传递
第一步: 编写java
public class HelloWorld{
static {
System.loadLibrary("native");
}
public native int getInt(int in);
public native boolean getBoolen(boolean bol);
public native byte getByte(byte by);
public native long getLong(long lo);
public native char getChar(char ch);
public native double getDouble(byte db);
public native short getShort(short sh);
public native float getFloat(float fl);
public static void main(String[] args) {
}
}
第二步: 编译、获取,更改JNI头文件名
$ javac HelloWorld.java
$ javah HelloWorld
$ mv HelloWorld.h HelloWorld.c
第三步: 查看文件
#include <jni.h>
JNIEXPORT jint JNICALL Java_HelloWorld_getInt
(JNIEnv *, jobject, jint);
JNIEXPORT jboolean JNICALL Java_HelloWorld_getBoolen
(JNIEnv *, jobject, jboolean);
JNIEXPORT jbyte JNICALL Java_HelloWorld_getByte
(JNIEnv *, jobject, jbyte);
JNIEXPORT jlong JNICALL Java_HelloWorld_getLong
(JNIEnv *, jobject, jlong);
JNIEXPORT jchar JNICALL Java_HelloWorld_getChar
(JNIEnv *, jobject, jchar);
JNIEXPORT jdouble JNICALL Java_HelloWorld_getDouble
(JNIEnv *, jobject, jbyte);
JNIEXPORT jshort JNICALL Java_HelloWorld_getShort
(JNIEnv *, jobject, jshort);
JNIEXPORT jfloat JNICALL Java_HelloWorld_getFloat
(JNIEnv *, jobject, jfloat);
第四步: 总结JNI中的基本数据类型
Java类型 | 本地类型 | 描述 |
---|---|---|
boolean | jboolean | C/C++8位整型 |
byte | jbyte | C/C++带符号的8位整型 |
char | jchar | C/C++无符号的16位整型 |
short | jshort | C/C++带符号的16位整型 |
int | jint | C/C++带符号的32位整型 |
long | jlong | C/C++带符号的64位整型e |
float | jfloat | C/C++32位浮点型 |
double | jdouble | C/C++64位浮点型 |