java本地方法 数值参数与返回值

数值参数与返回值
当在c和java之间传递数字时,应该知道他们彼此对应的类型
例如: c 也有 int 和long数据类型,但是他们的实现却是取决于平台的,在一些平台上,int 类型是32位的整数,基于这个原因,java本地接口定义了jint ,jlong 等类型


java编程语言       c语言          字节 
boolean             jboolean       1
byte                  jbyte              1
char jchar         2
short jshort             2
int jint         4
long jlong         8
float jfloat         4
double jdouble           8


在jni.h 中 ,还定义了常量   JNI_FALSE = 0  和 JNI_TRUE = 1。


用 printf 格式化字数字
Printf1.java
class Printf1{
 public static native int print(int width,int precision,double x);
static{
    System.loadLibrary("Printf1");
}
}


注意,用c 实现该方法时,所有的int 和double 都转换成了 jint 和jdouble


Printf1.c
#include "Printf1.h"
#include <stdio.h>
JNIEXPORT jint JNICALL Java_Printf1_print (JNIEnv* env, jclass cl, jint width, jint precision , jdouble x){
char fmt[30];
jint ret;
sprintf(fmt,"%%%d.%df",width,precision);
ret = printf(fmt,x);
fflush(stdout);
return ret;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值