public class Sample1 { |
public native int intMethod( int n); |
public native boolean booleanMethod( boolean bool); |
public native String stringMethod(String text); |
public native int intArrayMethod( int [] intArray); |
public static void main(String[] args) { |
System.loadLibrary( "Sample1" ); |
Sample1 sample = new Sample1(); |
int square = sample.intMethod( 5 ); |
boolean bool = sample.booleanMethod( true ); |
String text = sample.stringMethod( "Java" ); |
int sum = sample.intArrayMethod( new int [] { 1 , 2 , 3 , 4 , 5 , 8 , 13 }); |
System.out.println( "intMethod: " + square); |
System.out.println( "booleanMethod: " + bool); |
System.out.println( "stringMethod: " + text); |
System.out.println( "intArrayMethod: " + sum); |
} |
} |
//c语言版 |
---------------------- - |
#include "Sample1.h" |
#include <string.h> |
JNIEXPORT jint JNICALL Java_Sample1_intMethod |
(JNIEnv * env, jobject obj, jint num) { |
return num * num; |
} |
JNIEXPORT jboolean JNICALL Java_Sample1_booleanMethod |
(JNIEnv * env, jobject obj, jboolean boolean ) { |
return ! boolean ; |
} |
JNIEXPORT jstring JNICALL Java_Sample1_stringMethod |
(JNIEnv * env, jobject obj, jstring string) { |
const char * str = ( * env)->GetStringUTFChars(env, string, 0 ); |
char cap[ 128 ]; |
strcpy(cap, str); |
( * env)->ReleaseStringUTFChars(env, string, 0 ); |
return ( * env)->NewStringUTF(env, strupr(cap)); |
} |
JNIEXPORT jint JNICALL Java_Sample1_intArrayMethod |
(JNIEnv * env, jobject obj, jintArray array) { |
int i, sum = 0 ; |
jsize len = ( * env)->GetArrayLength(env, array); |
jint * body = ( * env)->GetIntArrayElements(env, array, 0 ); |
for (i = 0 ; i < len; ++i) { |
sum += body[i]; |
} |
( * env)->ReleaseIntArrayElements(env, array, body, 0 ); |
return sum; |
} |
//c++语言版 |
---------------------- - |
#include "Sample1.h" |
#include <string.h> |
JNIEXPORT jint JNICALL Java_Sample1_intMethod |
(JNIEnv * env, jobject obj, jint num) { |
return num * num; |
} |
JNIEXPORT jboolean JNICALL Java_Sample1_booleanMethod |
(JNIEnv * env, jobject obj, jboolean boolean ) { |
return ! boolean ; |
} |
JNIEXPORT jstring JNICALL Java_Sample1_stringMethod |
(JNIEnv * env, jobject obj, jstring string) { |
const char * str = env->GetStringUTFChars(string, 0 ); |
char cap[ 128 ]; |
strcpy(cap, str); |
env->ReleaseStringUTFChars(string, 0 ); |
return env->NewStringUTF(strupr(cap)); |
} |
JNIEXPORT jint JNICALL Java_Sample1_intArrayMethod |
(JNIEnv * env, jobject obj, jintArray array) { |
int i, sum = 0 ; |
jsize len = env->GetArrayLength(array); |
jint * body = env->GetIntArrayElements(array, 0 ); |
for (i = 0 ; i < len; ++i) { |
sum += body[i]; |
} |
env->ReleaseIntArrayElements(array, body, 0 ); |
return sum; |
} |