java学习之JNI 学习五 处理数组
来源:互联网 发布:python 创建两个字典 编辑:程序博客网 时间:2024/05/17 05:50
- 外理数组
数组分为两种:
1, 基本类型的数组
2,对象类型(Object[])的数组
一个能通用于两种不同类型数组的函数:GetArrayLength(jarray array)
Get<TYPE>ArrayElements(<TYPE>Array arr, jboolean* isCopied);
这类函数可以把JAVA基本类型的数组转换到C/C++中的数组,有两种处理方式,一种是拷贝一份传回本地代码,另一个是把指向JAVA数组的指针直接传回本地代码,处理完本地化的数组后,通过Release<TYPE>ArrayElements来释放数组
Release<TYPE>ArrayElements(<TYPE>Array arr, <TYPE>* array, int mode)
用这个函数可以选择将如何处理JAVA跟C++的数组,是提交,还是撤销等等,内存释放还是不释放等
mode可以取下面的值:
0 ->对JAVA的数组进行更新并释放C/C++的数组
JNI_COMMIT ->对JAVA的数组进行更新但不释放C/C++的数组
JNI_ABORT ->对JAVA的数组不进行更新,释放C/C++的数组
Get<TYPE>ArrayRegion(<TYPE>Array arr, jsize start, jsize len, <TYPE>* buffer)
在C/C++预先开辟一段内存,然后把JAVA基本类型的数组拷贝到这段内存中,与GetStringRegion原理相同
Set<TYPE>ArrayRegion(<TYPE>Array arr, jsize start, jsize len ,const <TYPE>* buffer)
把JAVA基本类型的数组中的指定范围的元素用C/C++的数组中元素来赋值
- 处理数组----对象类型数组
JNI没有提供直接把JAVA的对象类型数组(Object[])直接转到C++中的jobject【】数组的函数,而是直接通过Get/SetObjectArrayElement这样的函数来对JAVA的Object[]数组进行操作
注: 使用上述函数不用释放资源
NewObjectArray可以通过指定长度跟初始值来创建某个类的数组
- java学习之JNI 学习五 处理数组
- Java JNI学习(五)
- JAVA学习笔记五之(1)数组
- JAVA学习笔记之(五)数组
- Jni学习之数组操作
- Ndk学习之JNI获取数组(Java-->C-->Java)
- Ndk学习之JNI传入数组(java-->C)
- android JNI学习之五 JNI中常用的方法
- 【java学习】jni之JNIEnv*
- JNI学习笔记五
- android JNI学习五
- JAVA学习笔记(五)- 数组
- JNI学习笔记5——本地方法处理java数组/引用问题/缓存jfieldID/jmethodID
- java之数组学习
- java学习之数组
- Java学习之数组
- java之数组学习
- Java Thread学习之五
- 清空std::stringstream,联系到stream的clear()和清空
- 格式化字符串
- 如何:在字符串中放置引号——摘自msdn
- 開始在csdn上寫blog
- POJ 1328 "Radar Installation"
- java学习之JNI 学习五 处理数组
- Zend Framework 1.10.1 开始使用 Zend_Session,Zend_Auth,和 Zend_Acl
- C++ 默认复制构造函数备忘
- swing弹出对话框
- Identify Anagram
- Cognos8 处理父子维度浅析
- 致新手:用VB6解决一些有趣的问题(七)
- CK3刷机步骤
- 彻底删除SQL Server2005的步骤