JNI学习笔记四



本地代码中创建java对象
//第二个参数为构造方法
jobject NewObject(jclass clazz, jmethodID methodID, ...)


示例代码(使用默认构造器创建对象):
jclass clazz_date=ent->FindClass("java/util/Date");
jmethodID mid_date=env->GetMethodID(clazz_date,"<init>","()V");
jobject now=env->NewObject(clazz_date,mid_date);




java字串和本地代码中字串
//utf-16
GetStringChars
//utf-8
GetStringUTFChar

示例代码:
//参数一:指向java中string对象的jstring变量
//参数二:boolean指针 是否对java中的String 对象进行拷贝
const jchar* GetStringChar(jstring str,jboolean* copied);
const char* GetStringUTFChar(jstring str,jboolean* copied);
注:开新内存,将java中的string拷贝到这个内存中,然后返回这个内存的指针
不要改变这个内存的内容,会破坏string在java中始终是个常量的原则

在不使用的时候要使用releaceStringChars/releaceStringTUFChar释放内存
//参数一:本地字串来源 参数二:本地字串
ReleaceStringChars(jstring jstr,const jchar* str);
ReleaceStringTUFChars(jstring jstr,const char* str);



const jchar* GetStringCritical(jsring str,jboolean* copied);
void ReleaseStringCritical(jstring jstr,const jchar* str);





//以下函数不会分配内存不会抛outOfMemoryError异常
GetStringRegion
GetStringUTFRegion
示例代码如下:
GetStringRegion(jstring str,jsize start,jsize len, char* buffer);
GetStringUTFRegion(jstring str,jsize start,jsize len, jchar* buffer);








其他的字符串函数
jstring NewString(const jchar* str,jsize len);
jstring NewStringUTF(const char* str);


jsize GetStringLength(jstring str);
jsize GetStringUTFLength(jstring str);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值