資源描述:
《黑馬程序員安卓教程:c語言入門》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、C語言入門JNI簡介1.1.1什么是JNIJavaNativeInterface(JNI),它允許Java代碼和其他語言寫的代碼進(jìn)行交互。JNI一開始是為了本地已編譯語言,尤其是C和C++而設(shè)計(jì)的,但是它并不妨礙你使用其他語言,只要調(diào)用約定受支持就可以了。1.1.2為什么用JNI1JNI擴(kuò)展了Java虛擬機(jī)的能力,因?yàn)镴ava不能直接和硬件交互,不能開發(fā)驅(qū)動(dòng)2Java代碼效率一般要低于C代碼,而Nativecode效率高,因此在數(shù)學(xué)運(yùn)算,實(shí)時(shí)渲染的游戲上以及音視頻處理上都需要用Java調(diào)用C語言3復(fù)用C/C++代碼,C語言經(jīng)過幾十年的發(fā)展,已經(jīng)形成了強(qiáng)大的類庫(比如文件壓縮,人臉識(shí)別open
2、cv,7zip,ffmpeg等),這些類庫我們沒必要用java語言重新實(shí)現(xiàn)一遍,通過JNI直接調(diào)用這些類庫即可4特殊的業(yè)務(wù)場景,比如電視、車載系統(tǒng)、微波爐等跟硬件直接相關(guān)的開發(fā)1.2.1C語言開發(fā)工具C語言的開發(fā)工具比較多,最常用是微軟的VisualStudio系列。我們教學(xué)用的是一款輕量級(jí)開發(fā)工具Dev-Cpp.exe,其gcc編譯器是C99標(biāo)準(zhǔn)。該軟件的安裝比較簡單,直接下一步,下一步即可。安裝好的圖標(biāo)如圖1-1所示,雙擊打開該軟件,然后創(chuàng)建一個(gè)新源文件(默認(rèn)是CPP文件,在保存的時(shí)候文件名稱改為hello.c)。圖1-1Dev-Cpp的圖標(biāo)這里,首先編寫一個(gè)案例:helloworld程
3、序,代碼如下所示。1.#include//引入頭文件,類似java的importjava.lang.*2.//C語言的入口函數(shù)main函數(shù)3.main(){4.printf("helloworld!");//在控制臺(tái)輸出helloworld代表換行5.system("pause");//讓系統(tǒng)暫停,不然程序執(zhí)行完后就自動(dòng)退出6.}編譯源程序,源文件要想運(yùn)行必須先編譯成hello.exe二進(jìn)制文件,然后才能運(yùn)行。運(yùn)行程序。1.2.2C語言的基本數(shù)據(jù)類型java語言的8大基本類型:4boolean1byte8位byte1byte8位short2byte16位char2b
4、yte16位int4byte32位float4byte32位long8byte64位double8byte64位C語言的基本數(shù)據(jù)類型:在C語言里面沒有boolean類型,0假非0真在C語言里面沒有byte類型可以用char表示byte類型。char1byte8位和java不同short2byte16位還可以表示java里面的charint4byte32位和java一致float4byte32位和java一致long4byte32位和java不同double8byte64位和java一致:int、long等整型可以用signed和unsigned關(guān)鍵字修飾,而float、double等浮點(diǎn)類型
5、則不可以。signed有符號(hào)的,是默認(rèn)的,本身不會(huì)修改類型的長度unsigned無符號(hào),第一位不是符號(hào)位,所有的數(shù)都是正數(shù)。案例:通過C代碼查看C語言的常用數(shù)據(jù)類型長度1.在C語言中查看數(shù)據(jù)類型主要靠sizeof(type)函數(shù)實(shí)現(xiàn)的。2./*3.查看C語言數(shù)據(jù)類型的長度4.*/5.main(){6.printf("C語言常見數(shù)據(jù)類型長度如下:");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.}執(zhí)行上面代碼,運(yùn)行結(jié)果如下::在上述代碼中代表著換行,啟
7、動(dòng)一個(gè)控制臺(tái)程序后,必須將這個(gè)程序關(guān)閉才能再次運(yùn)行另外一個(gè)控制臺(tái)程序。longlong類型是長長整型,64位,這個(gè)類型一般很少用。