zoukankan      html  css  js  c++  java
  • JNI(3)

    JNI(3)

    基本类型

    java 基本类型和 原始机器类型

    Java Type
    Native Type
    Description
    boolean
    jboolean
    unsigned 8 
    byte
    jbyte
    signed 8 bits
    char
    jchar
    unsigned 16 bits
    short
    jshort
    signed 16 bits
    int
    jint
    signed 32 bits
    long
    jlong
    signed 64 bits
    float
    jfloat
    32 bits
    double
    jdouble
    64 bits
    void
    void

    N/A


    引用类型

    JNI包含一定数量的与java对象已对应的引用类型


    在C中,所有其他引用类型的定义是一样的:
    typedef jobject jclass;

    在C++中,JNI介绍一个套虚的类来加强与子类的关系:
    class _jobject {};
    class _jclass : public _jobject {};
    ...
    typedef _jobject *jobject;
    typedef _jclass *jclass;

    字段和方法IDs

    方法和字段ids是普通的C类型指针:
    struct _jfieldID;              /* opaque structure */
    typedef struct _jfieldID *jfieldID;   /* field IDs */
    
    struct _jmethodID;              /* opaque structure */
    typedef struct _jmethodID *jmethodID; /* method IDs */

    值类型

    jvalue 联合类型通常作为参数数组的元素类型。声明如下:
    typedef union jvalue {
        jboolean z;
        jbyte    b;
        jchar    c;
        jshort   s;
        jint     i;
        jlong    j;
        jfloat   f;
        jdouble  d;
        jobject  l;
    } jvalue;

    类型标志

    JNI使用Java VM的表示类型的标志。
    Type SignatureJava Type
    Z
    boolean
    B
    byte
    C
    char
    S
    short
    I
    int
    J
    long
    F
    float
    D
    double
    L fully-qualified-class ;
    fully-qualified-class
    [ type
    type[]
    ( arg-types ) ret-type
    method type
    例如:java 方法:
    long f (int n, String s, int[] arr);
    对应的类型标识
    (ILjava/lang/String;[I)J

    修改UTFf-8的字符串

    JNI使用修改的UTF-8字符串来代表不同的字符串类型。Java VM同样可以使用修改的UTF-8字符串。修改后的UTF-8字符串已编码过的,字符序列只包含非空的ASCII字符,每个字符可以只使用一个字节代表。





  • 相关阅读:
    Java学习笔记之---单例模型
    Java学习笔记之---内部类
    Java项目案例之--封装的实例
    Java学习笔记之---构造方法
    Java学习笔记之---static
    Java学习笔记之---面向对象
    咨询顾问与逻辑思客
    最重要与靠不住之间如何平衡
    《网络借贷信息中介机构业务活动管理暂行办法》
    商业银行法律法规与监管要求汇总
  • 原文地址:https://www.cnblogs.com/java20130722/p/3207232.html
Copyright © 2011-2022 走看看