public class MediaRecorder
{
    static {
        System.loadLibrary("media_jni");
        native_init();
    }
    private final static String TAG = "MediaRecorder";
例如上面代码,被static修饰的加载lib的代码,作用是指即使有多个MediaRecorder对象,也只加载一次media_jni吗?即static修饰的代码只执行一遍。
可以这么理解吗?

解决方案 »

  1.   


    别瞎说。
    static代码块是在class字节码加载到jvm之后,就开始执行的,因为字节码只加载一次,当然static代码块也只执行一次。
    static与instance无关。package simple;
    class AA{
    static{
    System.out.println("static block ");
    }
    }
    public class Test1 {
    public static void main(String[] args)throws Exception {
    Class.forName("simple.AA");
    }
    }
    程序会输出:static block 
      

  2.   

    static块加载类时即执行~~之后new等等均不会再执行
      

  3.   

    谢谢各位,就是三楼说的那样。
    测试了下,的确与new对象无关,加载时就执行了,而且只在加载时执行。