1. 调用 java 层 static 的获取 uuid 的方法
1 | JNIEXPORT void JNICALL Java_com_east_jni08_Sample1_callStaticMethod |
Jni 回收内存:(*env)->ReleaseStringUTFChars(env,j_uuid,c_uuid);
2. jni 数据类型
- jstring -> java String
- jint -> java int
- jfloat -> java float
- jdouble -> java double
- jobject -> java object
- jintArray -> java int[]
- jdoubleArray -> java double[]
- jbyteArray -> java byte[]
….
3.java数据类型对应的签名
3.1.基本数据类型签名
- boolean -> Z
- byte -> B
- char -> C
- short -> S
- int -> I
- long -> J
- float -> F
- double -> D
- void -> V
3.2.数组引用类型签名
- int[] -> [I
- float[] -> [f
- byte[] -> [B
- char[] -> [C
- short[] -> [S
- double[] -> [D
- long[] -> [F
- boolean[]-> [Z
3.3.引用数据类型签名
- String -> Ljava/lang/String;
- Object[] -> [L全类名;
4. 常量指针和指针常量
- 常量变量:被常量修饰的变量,不能再次被赋值 (Java)
- 常量指针:const 在 * 之前,指针的地址是可以被再次赋值的(可以修改的),指针地址上面的值(变量)是不能被修改的,常量指针的常量是不能被改变的。
- 指针常量:const 在 * 之后,指针的地址是不可以被再次赋值的(不可以修改的),指针地址上面的值(变量)能被修改的,指针常量的指针地址是不能被改变的。
1 | void main(){ |
5. Native 层构建 Java 对象
- 如果是一个类的构造方法获取jmethodID时,名字传
<init>
1 | // c 层 创建 java 对象 |