前言
之前对JNI基本的使用以及很熟悉了,但也是值得部分基础内容,这次就记录一下JNI中的基础类型,方便自己查阅。
正文
基本类型
下面是本类型和本地等效类型
Java 类型 本地类型 说明 boolean jboolean 无符号, 8 位 byte jbyte 无符号, 8 位 char jchar 无符号, 16 位 short jshort 有符号, 16 位 int jint 有符号, 32 位 long jlong 有符号, 64 位 float jfloat 32 位 double jdouble 64 位 void void N/A
除了void一样,其他的都是在基础类型上加了前缀j,还是比较容易机记住的。
PS: JNI中用jint和int都是可以用的
当然,jni中为了方便,有些宏定义,比如
#define JNI_FALSE 0 #define JNI_TRUE 1
哈哈,跟C语音一样,非零即真。
typedef jint jsize;
jsize整数类型用于描述主要指数和大小 。
引用类型
JNI中有很多对应于java对象的引用类型。
下面是引用类型的组织层次结构。
jobject (所有java对象) jclass (Class对象) jstring (String对象) jarray (数组) jobjectArray (object数组) jbooleanArray (boolean数组) jbyteArray (byte数组) jshortArray (short数组) jintArray (int数组) jlongArray (long数组) jfloatArray (float数组) jdoubleArray (double数组) jthrowable (Throwable对象)
值类型
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虚拟机的类型签名表
类型签名 Java类型 Z boolean B byte C char S short I int J long F float D double L fully-qualified-class ; 全限定的类 [ type type[] ( arg-types ) ret-type 方法类型
举个例子
#java native_computer public native int native_computer(String type, int a, int b); #对应的类型签名 (Ljava/lang/String;II)I # java multiply public static int multiply(int x, int y) { return x * y; } #对应的类型签名 (II)I
规则很简单,但偶尔可能转不过来,推荐使用javac和 javap进行转换。具体看《》中的介绍。
参考文章
-
《
历史上的今天
暂无评论...
随机推荐
《MySQL基础教程》笔记8
前言主要是介绍PHP脚本操作MySQL。根据《MySQL基础教程-西泽梦路》学习,简单的做一下笔记。记录于此,方便自己回忆。正文PDO什么是PDOPDO是PHP 5.1.0及更高版本中定义的标准数据库连接机制,其目的是更方便地利用数据库。PDO是用于管理数据库的“类”(class),...
林清玄:路上的情书
我捡过一封诀别的情书。情书上有这样看来普通的句子:“当初是我选择了你,心里明知与你不会长久,还是执着的选择了你。”“这些日子以来,谢谢你陪我走过这一段路。”“你是一个很好的人,你一定会认识比我好上千倍的女孩。”“由衷地希望在没有我的日子,你依然过得好。”会捡到这封情书是很偶然的。有一天我在...
[代码片段]GradientTextView渐变的TextView
前言本质上就是通过LinearGradient来实现渐变的正文public class GradientTextView extends androidx.appcompat.widget.AppCompatTextView { public GradientTextView(Context...
[摘]Android如何设置TextView的行间距、行高。
在Android系统中TextView默认行间距比较窄,不美观。我们可以设置每行的行间距,可以通过属性android:lineSpacingExtra或android:lineSpacingMultiplier来做。修改行间距、行高你可以使用如下TextView属性1、android:lin...
[摘]Java反射的方法反射的基本操作
这篇文字命名不太友好,但解释还是不错的。本文摘抄于《Java反射之——方法反射的基本操作》package com.imooc.reflect;import java.lang.reflect.Method;public class MethodDemo1 { public st...
Android 创建1像素的悬浮窗口
前言创建一个1像素的悬浮窗口。代码记录于此,方便自己查阅。正文WindowManager弹窗提示时需要注意下,比如系统应用和非系统应用权限的不同、Android不同版本的权限申请不同等。需要配置SYSTEM_ALERT_WINDOW权限<uses-permission andro...