Java中JNI的使用詳解第四篇:傳參之基本數(shù)據(jù)類型的使用

基本數(shù)據(jù)類型的傳遞

第一步: 編寫java

public class HelloWorld{

    static {
        System.loadLibrary("native");
    }
    
    public native int getInt(int in);
    public native boolean getBoolen(boolean bol);
    public native byte getByte(byte by);
    public native long getLong(long lo);
    public native char getChar(char ch);
    public native double getDouble(double db);
    public native short getShort(short sh);
    public native float getFloat(float fl);

    public static void main(String[] args) {
        HelloWorld world=new HelloWorld();
        System.out.println("Int :"+world.getInt(10));
        System.out.println("Boolen :"+world.getBoolen(false));
        System.out.println("Long :"+world.getLong(10000));
        System.out.println("Char :"+world.getChar('a'));
        System.out.println("Double :"+world.getDouble(12.12));
        System.out.println("Short :"+world.getShort((short)12));
        System.out.println("Float :"+world.getFloat(10.00f));
    }   
}

第二步: 編譯度液、獲取窗价,更改JNI頭文件名

$ javac HelloWorld.java
$ javah HelloWorld
$ mv HelloWorld.h  HelloWorld.c

第三步完成JNI文件的編寫

#include <jni.h>

JNIEXPORT jint JNICALL Java_HelloWorld_getInt
  (JNIEnv * env, jobject job, jint jin){
    return jin*jin;
  }

JNIEXPORT jboolean JNICALL Java_HelloWorld_getBoolen
  (JNIEnv *env, jobject job, jboolean jb)
  {
    return !jb;
  }

JNIEXPORT jbyte JNICALL Java_HelloWorld_getByte
  (JNIEnv * env, jobject job, jbyte bt){
    return bt+1;
  }

JNIEXPORT jlong JNICALL Java_HelloWorld_getLong
  (JNIEnv * env, jobject job, jlong jl){
    return jl*jl;
  } 


JNIEXPORT jchar JNICALL Java_HelloWorld_getChar
  (JNIEnv * env, jobject jb, jchar jc){
    return jc-('a'-'A');
  }

JNIEXPORT jdouble JNICALL Java_HelloWorld_getDouble
  (JNIEnv * env, jobject jo, jdouble jd){
    return jd*2;
  }


JNIEXPORT jshort JNICALL Java_HelloWorld_getShort
  (JNIEnv * jnv , jobject job, jshort js){
    return js*2.0;
  }


JNIEXPORT jfloat JNICALL Java_HelloWorld_getFloat
  (JNIEnv * env, jobject job, jfloat jf){
    return jf*2;
  }

第四步: 編譯

$ gcc HelloWorld.c -shared -fPIC -o libnative.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/

第五步:設(shè)置程序共享庫位置

$ export LD_LIBRARY_PATH=.

第六步:執(zhí)行java程序

$ java HelloWorld

成功打友溆啊吓肋!

Int :100
Boolen :true
Long :100000000
Char :A
Double :24.24
Short :24
Float :20.0

下一節(jié)講解引用數(shù)據(jù)類型的傳遞

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兽肤,一起剝皮案震驚了整個濱河市绪囱,隨后出現(xiàn)的幾起案子镶奉,更是在濱河造成了極大的恐慌础淤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哨苛,死亡現(xiàn)場離奇詭異鸽凶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)建峭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門玻侥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亿蒸,你說我怎么就攤上這事凑兰。” “怎么了边锁?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵姑食,是天一觀的道長。 經(jīng)常有香客問我茅坛,道長音半,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮曹鸠,結(jié)果婚禮上煌茬,老公的妹妹穿的比我還像新娘。我一直安慰自己物延,他們只是感情好宣旱,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叛薯,像睡著了一般浑吟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耗溜,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天组力,我揣著相機(jī)與錄音,去河邊找鬼抖拴。 笑死燎字,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阿宅。 我是一名探鬼主播候衍,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洒放!你這毒婦竟也來了蛉鹿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤往湿,失蹤者是張志新(化名)和其女友劉穎妖异,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體领追,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡他膳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绒窑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棕孙。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖些膨,靈堂內(nèi)的尸體忽然破棺而出散罕,到底是詐尸還是另有隱情,我是刑警寧澤傀蓉,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布欧漱,位于F島的核電站,受9級特大地震影響葬燎,放射性物質(zhì)發(fā)生泄漏误甚。R本人自食惡果不足惜缚甩,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窑邦。 院中可真熱鬧擅威,春花似錦、人聲如沸冈钦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞧筛。三九已至厉熟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間较幌,已是汗流浹背揍瑟。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留乍炉,地道東北人绢片。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像岛琼,于是被迫代替她去往敵國和親底循。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容