① java本地方法詳解,什麼是JAVA本地方法
native關鍵字修飾的方法即為本地方法,本地方法類似介面方法,不過介面方法是用abstract修飾的,不同在於雖然本地方法也看不到實現體,但實際上是由jvm在載入時調用底層實現的,本地方法的實現體不是由java代碼寫的,而可能由別的語言如c實現,可以理解為連接java代碼和其他語言實現的代碼的入口。
② 在java本地方法調用中,jni.h這個文件起到的作用是什麼它和jniEvn是什麼關系為什麼必須要引入jni.h...
簡單的回答就是需要本地庫函數。
從Java原理來基叢講,你還要看下文:
本地方法調用就是 Java Native Interface(JNI),JNI最終的目的是在Java端調用本地系統的方法,Java之所以跨平台是因為JVM的設計是基於堆棧的,而像C、C++是基於寄存器的,寄存器應該懂吧,每個硬體的寄存器都不相同。JAVA class類運宏瞎行在搏絕櫻JVM中,即在堆棧(邏輯的數據結構)中,這個堆棧的數據結構都一樣,所以就JAVA就有了跨平台。
而有的時候JAVA想直接對計算機硬體操作,即直接對寄存器操作,那麼就需要相應的本地庫,jni.h就是本地庫。這個本地庫內的API都是完全基於寄存器來操作的。
一個字一個字敲的,不知道我說的你明白沒?
如果你明白基於堆棧和寄存器的區別,理解JNI就沒問題了。
③ java中成員類和本地類分別是什麼意思
對普通類(沒有內部類的類)來說,內部類和外部類都與他無關;對有內部類的類來說,它們就是其內部類的外部類,外部類是個相對的說法,其實就是有內部類的類。
所以,要回答這個問題,只需要講解內部類是什麼:
Java中的內部類共分為四種:
靜態內部類static inner class (also called nested class)
成員內部類member inner class
局部內部類local inner class
匿名內部類anonymous inner class
靜態內部類Static Inner Class
最簡單的內部類形式。
類定義時加上static關鍵字。
不能和外部類有相同的名字。
被編譯成一個完全獨立的.class文件,名稱為OuterClass$InnerClass.class的形式。
只可以訪問外部類的靜態成員和靜態方法,包括了私有的靜態成員和方法。
生成靜態內部類對象的方式為:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
示例代碼:
package com.learnjava.innerclass;
class StaticInner
{