Java基础知识——JNI入门经典
JNI是Java Native Interface的缩写,通过使用native方法,Java可以调用本地C/C++子程序。声明一个本地子程序的方法是:在方法名前添加native修饰,如
public native void myfun();
调用该子程序的方法为:
static{
System.loadLibrary("myfun");
}
在Windows上,上面的myfun即指包含用C/C++写的myfun()的实体的DLL——myfun.dll。下面以NativeDemo程序为例来说明怎样在Windows下(XP+VS2008+JDK1.6u17)使用JNI。
1. 编写源程序NativeDemo.java
NativeDemo.java中声明了一个本地子程序test():
public native void test();
该子程序从主程序获得int变量i的值,对其加倍,然后返回给主程序。具体代码如下:
// Using Native method
public class NativeDemo{
int i;
public static void main(String args[]){
NativeDemo ob=new NativeDemo();
ob.i=10;
System.out.println("This is ob.i before the native method: "+ob.i);
ob.test(); //call a native method
System.out.println("This is ob.i after the Native method: "+ob.i);
ob.test(); //call a native method
System.out.println("This is ob.i after the Native method: "+ob.i);
}
// declare native method
public native void test();
static{
// load DLL that contains static method
System.loadLibrary("NativeDemo");
}
}
2. 编译NativeDemo.java
javac NativeDemo.java
得到NativeDemo.class
3. 使用javah.exe生成NativeDemo.h
javah -jni NativeDemo
javah.exe在%JAVA_HOME%\bin下,生成的NativeDemo.h如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeDemo */
#ifndef _I
相关文档:
(1)初始化的顺序(静态、非静态、final、变量、对象)
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
我们也可以通过下面的测试代码来验证这一点:
Java代码:
public class InitialOrderTest {
......
本文针对jdk6.0中java.lang.Class类的API进行了简单的实例应用,例子简单易懂,比较适合入门级阅读。
实例简介:
/*
*IncludeInnerClass类中包含了三种访问控制的内部类,并且以这三个内部类的引用对象和一个整型数作为属性,在外部类的方法中分别调用了 内部类的方法
*外部类有两个构造方法, ......
JSP的9个内置对象是:out、request、response、page、pageContext、session、application、exception、config。要注意对象名的大小写
What results from attempting to compile and run the following code? public class Ternary{ public static void main(String args[]){ int a = 5; System.out.printl ......
1、 一个数如果恰好等于其因子(除了本身以外的约数之和),该数就称为“完数”。编写一个 Java Application 程序,求出 1000 以内的所有完数。
public class homework11
{
public static void main(String[] args)
//输出1000以内的所有完数
{
int sum; ......
1、 串操作:使用字符串存贮一个英文句子“Java is an object oriented programming
language”。显示该句子,并算出每个单词的字母数和平均字母数,并按单词升序排列输出(不用数组,只用串操作)
public class homework21 {
public static void main(String[] args) {
&nb ......