初次看见native关键字是自己在看Scanner类源码中传递System.in参数实现打印,之后转到System观看源码时看见native关键字,关于native关键字笔者表示,是Java与C语言的通讯接口,因为Java语言没有操作底层的条件,所以Java语言只好用C语言来操作底层部件,定义了native关键字。
System出现的native方法:
public final class System {
private static native void registerNatives();
.......
}
笔者观看代码时一脸懵,开始认为怎么会有这种方法,没有方法体。之后笔者也试了以下。顺便搜索一些前者资料。自己实现了一个。基于native关键字的加减法。
package com.java.jvm.demo;
public class JVMDemo {
public native int add(int i,int j);
public native int sub(int i,int j);
public native int mul(int i,int j);
public native int div(int i,int j);
}
因为native关键字时要用C去实现的方法,在编译时尤其注意,需要将类编译成C语言的头文件。
1、首先将类编译为.class的字节码文件
2、第一种方法是在.class的目录下使用javah命令编译,还有一种方法是在eclipse中配置编译器。具体就不详细说明。
3、类与包名一旦定义好不能随意更改,因为编译好的头文件会附带包、类名
之后编译的头文件代码:
/* DO NOT E