JNI里的数据类型 和签名方法
2013-10-10 10:41
183 查看
现在来介绍下JNI里的数据类型。在C++里,编译器会很据所处的平台来为一些基本的数据类型来分配长度,因此也就造成了平台不一致性,而这个问题在Java中则不存在,因为有JVM的缘故,所以Java中的基本数据类型在所有平台下得到的都是相同的长度,比如int的宽度永远都是32位。基于这方面的原因,java和c++的基本数据类型就需要实现一些mapping,保持一致性。下面的表可以概括:
在这里有必要单独来讲一讲这个方法签名,为什么要用这个东东呢?我们知道,在Java里方法是可以被重载的,比如我一个类里有public void a(int arg)和public void a(String arg)这两个方法,在这里用方法名来区分方法显然就是行不通的了。方法签名包括两部分:参数类型和返回值类型;具体的格式:(参数1类型签名 参数2类型签名)返回值类型签名。下面是java类型和年名类型的对照的一个表
Java类型 | 本地类型 | JNI中定义的别名 |
int | long | jint |
long | _int64 | jlong |
byte | signed char | jbyte |
boolean | unsigned char | jboolean |
char | unsigned short | jchar |
short | short | jshort |
float | float | jfloat |
double | double | jdouble |
Object | _jobject* | jobject |
在这里有必要单独来讲一讲这个方法签名,为什么要用这个东东呢?我们知道,在Java里方法是可以被重载的,比如我一个类里有public void a(int arg)和public void a(String arg)这两个方法,在这里用方法名来区分方法显然就是行不通的了。方法签名包括两部分:参数类型和返回值类型;具体的格式:(参数1类型签名 参数2类型签名)返回值类型签名。下面是java类型和年名类型的对照的一个表
Java类型 | 对应的签名 |
boolean | Z |
byte | B |
char | C |
shrot | S |
int | I |
long | L |
float | F |
double | D |
void | V |
Object | L用/分割包的完整类名; Ljava/lang/String; |
Array | [签名 [I [Ljava/lang/String; |
相关文章推荐
- 对于JNI方法名,数据类型和方法签名
- 对于JNI方法名,数据类型和方法签名的一些认识
- Android中关于JNI 的学习(二)对于JNI方法名,数据类型和方法签名的一些认识
- Android有关JNI 学习(两)为JNI方法名称,数据类型和方法签名的一些知识
- Android JNI学习系列1.2—— JNI方法名,数据类型和方法签名的一些认识
- 【转】对于JNI方法名,数据类型和方法签名的一些认识
- 【转】对于JNI方法名,数据类型和方法签名的一些认识
- Android中关于JNI 的学习(二)对于JNI方法名,数据类型和方法签名的一些认识
- Android深入理解JNI(二)类型转换、方法签名和JNIEnv
- JNI 之数据类型与属性和方法的访问
- JNI的数据类型和类型签名
- JNI类型签名和方法签名
- JNI中数据类型及签名类型
- Android深入理解JNI(二)类型转换、方法签名和JNIEnv
- Jni的数据类型和类型签名
- JNI 数据类型及方法调用对照表
- JNI和NDK编程(三)JNI的数据类型和类型签名
- Android 通过jni返回Mat数据类型方法
- JNI中基本类型数组的传递方法(无需拷贝数据!!!)
- JNI语法之数据类型和C访问Java属性和方法