在Object.class里看到如下一段代码
    private static native void registerNatives();
    static {
        registerNatives();
    }

在网上查了查,大致了解native是java调用其他语言编写的可执行程序的一个接口,但都没有实例,也不能更深刻的认识。希望给个小例子,让我一目了然。还有,顺便说一下下面的static直接加花括号的作用。

解决方案 »

  1.   

    答:1)native表示registerNatives(); 变个方法是用其它语言如C实现一个方法."希望给个小例子,让我一目了然"
    如下代码就是registerNatives(); 的C语言的实现:JNIEXPORT void JNICALL
    Java_java_lang_Object_registerNatives(JNIEnv *env, jclass cls)
    {
        (*env)->RegisterNatives(env, cls,
                                methods, sizeof(methods)/sizeof(methods[0]));
    }
    2)static直接加花括号的作用:表示 类初始化块
    当Object类被装入内存并初始化时,会自动执行该花括号内部的代码.
      

  2.   

    顶楼上,native声明的方法代表改方法体是由本地方法实现的。
    static加载的代码块为静态代码块,当程序被加载到内存时执行一次。
      

  3.   

    顶楼上,native声明的方法代表改方法体是由本地方法实现的。
    static加载的代码块为静态代码块,当程序被加载到内存时执行一次。
      

  4.   

    的确,native方法是用非java语言实现的,至于static代码块就是静态代码块了,加载这个类的时候括号内代码执行一次
      

  5.   

    关于native方法是如何实现的,java核心技术里面有介绍,static是静态初始化块,当类加载入虚拟机时执行。
    native的实现例子最多的是jdk,因为jdk大部分基础功能都是用native实现的,你可以下载jdk源代码查看native方法的实现,源代码可以到sun官方下载到。
      

  6.   

    native方法可能用c、c++也可能用汇编实现。和具体的系统环境有关系,要不不会平台独立。
      

  7.   


    public class dll {
    public synchronized native static String coding(String sin); //加密
    public synchronized native static String decoder(String sin); //解密 static{  System.loadLibrary("javaDC");  }
    }