首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

JNI的数据类型和类型签名

2024-12-19 来源:化拓教育网

JNI的数据类型

基本类型

JNI类型 Java类型 描述
jbyte byte 有符号,8位,整型
jshort short 有符号,16位,整型
jint int 有符号,32位,整型
jlong long 有符号,64位,整型
jfloat float 32位,浮点型
jdouble double 64位,浮点型
jboolean boolean 无符号,8位,整型
jchar char 无符号,16位,整型
void void N/A

引用类型

JNI类型 Java类型 描述
jclass Class
jobject Object Java对象
jstring String 字符串
jobjectArray Object[] 对象数组
jbyteArray byte[] byte数组
jshortArray short[] short数组
jintArray int[] int数组
jlongArray long[] long数组
jfloatArray float[] float数组
jdoubleArray double[] double数组
jbooleanArray boolean[] boolean数组
jcharArray char[] char数组
jthrowable Throwable Throwable

jmethodID、jfieldID

  1. jmethodID可用于获取类中函数的标识,然后通过此标识来调用函数。

  2. jfieldID可用于获取类中变量的标识,然后通过此标识来读写变量。

JNI的类型签名

  • JNI的类型签名标识了一个特定的Java类型,这个类型可以是类、方法或数据类型。

类和对象的签名

  • 采用L+包名+类名+;的形式,且将包名中的.替换为/。

    如:java.lang.String的签名为Ljava/lang/String;,注意末尾的;也是签名的一部分

基本数据类型的签名

  • 基本数据类型的签名是有规律的。

    1. 一般为首字母的大写
    1. boolean用Z,因为B被byte占用了;
    1. long用J,因为L用来表示类的签名。
Java类型 签名
byte B
short S
int I
long J
float F
double D
boolean Z
char C
void V

数组的签名

  • 一维数组的签名就是[+类型签名
Java类型 签名
Object[] [Ljava/lang/Object
String[] [Ljava/lang/String
byte[] [B
short[] [S
int[] [I
long[] [J
float[] [F
double[] [D
boolean[] [Z
char[] [C
  • 多维数组的签名就是n个[+类型签名,其中n表示数组的维度。

    如:int[][]的签名为[[I

方法的签名

  • 方法的签名为:(各参数类型签名)返回值类型签名。

    如:int func1()的签名为()I

    如:void func2(int i)的签名为(I)V

    如:boolean func3(int a, double b, String[] c)的签名为(ID[Ljava/lang/String)Z

显示全文