爱收集资源网

Java调用C语言:为什么用JNI扩展Java虚拟机能力

网络整理 2023-10-01 14:02

资源描述:

《黑马程序员安卓教程:c语言入门》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。

1、C语言入门JNI简介1.1.1哪些是JNIJavaNativeInterface(JNI),它容许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不阻碍你使用其他语言,只要调用约定受支持就可以了。1.1.2为何用JNI1JNI扩充了Java虚拟机的能力,因为Java不能直接和硬件交互,不能开发驱动2Java代码效率通常要高于C代码,而Nativecode效率高,因此在物理运算,实时渲染的游戏上以及音视频处理上都须要用Java调用C语言3复用C/C++代码,C语言经过几十年的发展,已经产生了强悍的泛型(比如文件压缩,人脸辨识open

2、cv,7zip,ffmpeg等),这些泛型我们没必要用java语言重新实现一遍,通过JNI直接调用这种解释器即可4特殊的业务场景,比如电视、车载系统、微波炉等跟硬件直接相关的开发1.2.1C语言开发工具C语言的开发工具比较多,最常用是谷歌的VisualStudio系列。我们教学用的是一款轻量级开发工具Dev-Cpp.exe,其gcc编译器是C99标准。该软件的安装比较简单,直接下一步,下一步即可。安装好的图标如图1-1所示,双击打开该软件,然后创建一个新源文件(默认是CPP文件,在保存的时侯文件名称改为hello.c)。图1-1Dev-Cpp的图标这儿,首先编撰一个案例:helloworld程

3、序,代码如下所示。1.#include//引入头文件,类似java的importjava.lang.*2.//C语言的入口函数main函数3.main(){4.printf("helloworld!");//在控制台输出helloworld代表换行5.system("pause");//让系统暂停,不然程序执行完后就手动退出6.}编译源程序,源文件要想运行必须先编译成hello.exe二进制文件,然后就能运行。运行程序。1.2.2C语言的基本数据类型java语言的8大基本类型:4boolean1byte8位byte1byte8位short2byte16位char2b

4、yte16位int4byte32位float4byte32位long8byte64位double8byte64位C语言的基本数据类型:在C语言上面没有boolean类型,0假非0真在C语言上面没有byte类型可以用char表示byte类型。char1byte8位和java不同short2byte16位还可以表示java上面的charint4byte32位和java一致float4byte32位和java一致long4byte32位和java不同double8byte64位和java一致:int、long等整型可以用signed和unsigned关键字修饰,而float、double等浮点类型

5、则不可以。signed有符号的,是默认的,本身不会更改类型的宽度unsigned无符号,第一位不是符号位,所有的数都是负数。案例:通过C代码查看C语言的常用数据类型厚度1.在C语言中查看数据类型主要靠sizeof(type)函数实现的。2./*3.查看C语言数据类型的宽度4.*/5.main(){6.printf("C语言常见数据类型宽度如下:");7.printf("int类型的宽度=%d",sizeof(int));8.printf("unsignedint类型的宽度=%d",sizeof(unsignedint));9.printf("float类型的宽度=%d",si

6、zeof(float));10.printf("long类型的宽度=%d",sizeof(long));11.printf("unsignedlong类型的宽度=%d",sizeof(unsignedlong));12.printf("double类型的宽度=%d",sizeof(double));13.printf("longlong类型的宽度=%d",sizeof(longlong));14.printf("void类型的宽度=%d",sizeof(void));15.system("pause");16.}执行前面代码,运行结果如下::在上述代码中代表着换行,启

7、动一个控制台程序后,必须将这个程序关掉能够再度运行另外一个控制台程序。longlong类型是长长整型,64位,这个类型通常极少用。

c语言不要自动关闭
上一篇:名片的制作,你真的了解吗? 下一篇:没有了
相关文章