`

JNI学习笔记四

    博客分类:
  • 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);

分享到:
评论

相关推荐

    JNI学习笔记.doc

    ### JNI学习笔记详解 #### 一、JNI简介 JNI(Java Native Interface)是Java平台提供的一种强大机制,它允许Java程序直接调用本地代码(通常是C或C++编写)。这为Java应用程序带来了额外的灵活性,使得开发者能够...

    android JNI 学习笔记.doc

    ### Android JNI 学习笔记详解 #### 一、JNI简介 JNI(Java Native Interface)即Java本地接口,是Java平台标准的一部分,它允许Java代码和其他语言(如C、C++等)编写的本地代码进行交互。在Android开发中,通过...

    java与c++交互(JNI学习笔记)

    ### Java与C++交互(JNI学习笔记) #### 一、Java类型与C/C++类型对应关系 在Java Native Interface (JNI) 中,Java 和 C/C++ 的数据类型有着明确的对应关系。理解这些对应关系是实现Java与C++交互的基础。 - **...

    黑马程序员JNI学习笔记

    针对所有初学JNI的人员的一个最全面的笔记,对于有过基础的朋友来说又是一个更好的助手. 省去了你自己去总结的时间,有更多的时间去敲代码. ------------黑马程序员学员-------------------

    Android JNI 学习笔记

    做为Android JNI还未入门的同志们,我这个总结的文档对你们真的很有用处,几乎大部分常规的Java访问C/C++以及C/C++访问Java的内容都包含在内。

    Android学习笔记含JNI、USB和ftdi通信方式详解

    ### Android学习笔记含JNI、USB和ftdi通信方式详解 #### 项目四:多线程文件下载 在Android开发中,文件下载是一个常见的需求。利用多线程技术可以提高文件下载的速度,尤其在网络条件较差的情况下更为明显。多...

    一个简单的Jni工程包括个人学习笔记

    这个压缩包“一个简单的Jni工程包括个人学习笔记”显然是一份关于JNI开发的学习资料,对于想要深入理解或初次接触JNI的开发者来说非常有价值。 JNI的核心在于提供了一种方式,使得Java代码能够调用本地(native)...

    jni学习源码

    在“jni学习源码”这个资料中,包含了两个关键部分:`jni学习笔记.docx`和`myNDK`。`jni学习笔记.docx`很可能是对JNI基础知识的详细讲解,包括但不限于以下内容: 1. **JNI基本概念**:解释JNI的作用,为何要在Java...

    Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    这篇“Android学习笔记——利用JNI技术在Android中调用、调试C++代码”将带你深入理解如何在Android应用中使用JNI来调用C++代码,以及如何进行调试。以下是对这一主题的详细阐述。 1. **JNI简介** JNI是Java平台的...

    关于JNI详解及笔记

    JNI,全称Java Native Interface,是Java平台标准的一部分,它为Java程序员提供了一种方法,可以在Java代码中调用本地(非Java)代码,反之...学习并熟练掌握JNI,对于提升Android应用的性能和功能有着至关重要的作用。

    JNI笔记的相关内容

    #### 一、为什么学习JNI? JNI(Java Native Interface)技术能够增强Java虚拟机的功能,使得Java程序能够直接调用本地语言(如C或C++)编写的函数。这对于提高程序性能、实现特定硬件访问以及利用已有C/C++代码等...

    JNI资料,笔记 (个人资料)

    本人从网上收集的一些关于JNI学习的资源,呵呵

    JAVA学习笔记————————

    9. **JNI(Java Native Interface)**:当JAVA代码需要调用本地(C/C++)代码时,JNI提供了桥梁,学习笔记会介绍如何使用JNI进行跨语言交互。 10. **JAVA标准库**:包括JDBC(数据库连接)、Swing(GUI开发)、JAXP...

    JNI CHM 文档查询 编程规范

    "biji.txt"可能是笔记、日志或其他辅助资料,它可能包含了一些开发者在学习和使用JNI过程中记录的信息。 总的来说,这个压缩包提供了一个全面的学习资源,涵盖了JNI的基础知识、调用流程、编程规范和实例,适合...

    javase学习笔记(全)

    这份"javase学习笔记(全)"涵盖了刘意版传智播客课程的主要内容,是学习Java编程语言的重要参考资料。以下将对Java SE的一些关键知识点进行详细解释: 1. **Java基础**:Java的基础语法包括数据类型(如整型、浮点型...

Global site tag (gtag.js) - Google Analytics