分类目录 : NDK与JNI

JNI编程笔记四

本文重点介绍JNI字符串部分操作,由于字符串也是对象类型,所以字符串的操作与基本数据类型是有差异的。前面介绍了JNI在操作对象类型时,必须借助于相应的函数,JNI也提供了不同的字符串操作函数。由于不同编程语言之间底层字符串存储格式不同,所以在C与Java之间操作字符串时,如果包含了中文编码,而又没有做特殊处理,直接使用JNI提供的字符串函数,这时候容易出现中文的乱码问题,那么如何解决乱码问题呢? [...]

JNI编程笔记三

在使用JNI时最重要的是Java与C/C++如何传递数据,以及数据类型之间如何映射。本文重点需要了解的是JNI中类型和签名描述符的表示方式,以及它们与Java中数据类型的对应关系。要求可以借助Java虚拟机命令生成JNI签名。最后,列举了一些一般性示例,通过示例演示了如何在Java和C之间进行数据交互,例如基本数据类型之间和数组类型之间。 由于JNI在使用C/C++与Java交互时很相似,所以后 [...]

JNI编程笔记二

在上一篇文章中着重介绍了JNI编程的书写步骤,借助于所建议的操作步骤,我们实现了一个简单的JNI调用示例。今天继续JNI介绍,重点包括JNIEnv在C/C++中的实现方式,使用关键字JNIEXPORT、JNICALL以及extern "C"语法的目的,然后是JNI函数名称的命名规范,最后是JNI中的数据类型,包括基本数据类和引用数据类型。 JNIEnv简绍 在对JNIEnv分析之前,这里先介绍 [...]

JNI编程笔记一

JNI即Java Native Interface,它允许Java与其它计算机语言的代码进行交互。在这里,我们可以简单的理解为JNI就是为了实现和C或者C++交互而存在的。 一般我们称Java中与C或者C++交互的方法为本地方法,每一个本地方法前面都有一个native的修饰符,并且方法不需要在Java层实现,只需要进行方法声明即可。本地方法与抽象方法很相似,不同的地方在于将abstract替 [...]

JNI之C++语言四

这是在JNI之前的最后一篇关于基础知识介绍的博客,从下篇开始就可以正式进入JNI的介绍篇章了。本文介绍C++中剩余的部分点,主要包括C++中的四种显式类型转换符、运算符重载以及模板。显示类型转换符以及模板是我们需要着重理解的部分,特别是模板部分,它跟Java中泛型机制很相似,在C++中也应用场景也非常多。 类型转换 在Java中如果高数据类型向低数据类型转换需要进行强制转换,,如double类 [...]

JNI之C++语言三

在上文介绍了面向对象的部分特性,如类的定义和对象的创建,包括常用的构造函数、析构函数以及复制构造函数的使用。本文继续介绍面向对象的其它特性,包括单继承多继承以及如何解决多继承中的二义性,虚函数的使用和多态的实现,友元函数和友元类的使用。 上述特性涉及到friend和virtual两个关键字的使用,friend是在使用友元时使用,而virtual关键字在定义抽象类和实现时多态时使用。 友元函数和 [...]

JNI之C++语言二

在上一篇博文JNI之C++语言一中介绍了C++中一些与C有差异或者特有的部分,但是还没有涉及到面向对象的一些特性 。在接下来的两篇博文中主要介绍C++面向对象的一些特性,限于篇幅的关系,本文主要介绍类的定义与访问控制,对象的创建和this指针,构造函数初始化列表,静态成员的初始化,构造函数、析构函数和复制构造函数的定义、作用以及执行时机。有关继承、友元、多态、虚函数等特性下篇博文继续。 类 [...]

JNI之C++语言一

由于C++完全兼容C语言的实现,所以C++中类似C语言实现的内容在本文就不做介绍了,如基本数据类型、指针、数组、字符串、预处理指令、宏、结构体、联合体、动态内存分配malloc、文件读写以及sizeof和typedef等等,更多可以参看前面C语言内容: JNI之C语言上篇 JNI之C语言中篇 JNI之C语言下篇 有了C语言的基础,学习C++就很容易上手了,再者,如果学习过Java,那些 [...]

JNI之C语言下篇

本文继续介绍C语言剩下的知识点,通过对前面两篇文章JNI之C语言上篇和JNI之C语言中篇的介绍,我们已经了解了结构体、指针、数组、函数、预处理指令宏等,接下来介绍其它几种数据类型,如联合体和枚举,还有动态内存分配以及文件流操作。 联合体和枚举 联合体 联合体也叫共用体,在定义方式上面类似结构体的定义,只是联合体在定义时使用的关键字是union。如果仅仅是声明了一个联合体,而没有定义变量,这时 [...]

JNI之C语言中篇

在上一篇文章中简单介绍了C语言的基础知识点,如sizeof操作符、变量、常量、预处理指令、宏以及指针。本文继续上一篇文章的内容,着重介绍如下三个方面知识点:函数、数组以及结构体。 函数 有一点这里简单说明一下,有时候我们说函数,有时候我们又说方法,一般定义在类中的称为方法,反之都称为函数,所以在C语言中一般称之为函数。 在C或者C++中,函数定义类似变量,在类型前面还有类别修饰符。函数前 [...]

JNI之C语言上篇

JNI这部分的知识一直以来都想整理一下,最近抽时间梳理了一下,大体上会分为三个部分进行介绍。首先是C语言相关知识点,然后是C++相关知识点,最后会结合前面的C和C++相对系统的学习一下JNI语法,并结合一般示例进行JNI使用介绍。 JNI即Java Native Interface的缩写,它提供了Java和C或者C++语言进行通信的API。JNI主要是Java为C或者C++通信设计的,但是并不排 [...]
共 1 页 1