JNI的学习之旅(一)
1、基本数据类型
???? JNI定义了一系列基本数据类型和引用数据类型与java相对应。
????
Java Language TypeNative TypeDescriptionboolean jbooleanunsigned?8 bits
bytejbytesigned 8 bitsshortjcharunsigned 16 bitsint jintsigned?32 bitslongjlongsigned?64 bitsfloatjfloat32 bitsdoublejdouble64 bits???观察能够发现,JNI基本数据类型只是比Java基本数据类型前多了个'j'而已。
?
2、引用数据类型
jobject???????????????????????????????????????????????????????????????????? (all objects)
?????????? jclass????????????????????????????????????????????????????????????(java.lang.Class instances)
?????????? jstring?????????????????????????????????????????????????????????? (java.lang.String instances)
?????????? jarray??????????????????????????????????????????????????????????? (arrays)
??????????????????? jobjectArray?????????????????????????????????????????(object[])
??????????????????? jbooleanArray????????????????????????????????????? (boolean[])
??????????????????? jcharArray????????????????????????????????????????????(char[])
??????????????????? jshortArray?????????????????????????????????????????? (short[])
??????????????????? jintArray?????????????????????????????????????????????? (int[])
??????????????????? jlongArray???????????????????????????????????????????? (long[])
??????????????????? jfloatArray???????????????????????????????????????????? (float[])
????????????????????jdoubleArray????????????????????????????????????????? (double[])
??????????? jthrowable???????????????????????????????????????????????????? java.lang.throwable
?
?????? 跟java一样,jobject是所有引用类型的父亲。看看是不是很容易理解?呵呵,关于jthrowable,JNI也是有线程概念的。
3、 The jvalue Type
Jvalue 是基本数据类型和引用数据类型的集合,它的定义如下:
typedef? union jvalue{
???????? jboolean? z;
??????? jbyte???????? b;
??????? jchar?????????c;
??????? jshort??????? s;
??????? jint??????????? i;
??????? jlong???????? j;
??????? jfloat??????? f;
??????? jdouble???? d;
??????? jobject????? l;
)jvalue;
?
?
?