① 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
{