public class MediaRecorder
{
static {
System.loadLibrary("media_jni");
native_init();
}
private final static String TAG = "MediaRecorder";
例如上面代码,被static修饰的加载lib的代码,作用是指即使有多个MediaRecorder对象,也只加载一次media_jni吗?即static修饰的代码只执行一遍。
可以这么理解吗?
{
static {
System.loadLibrary("media_jni");
native_init();
}
private final static String TAG = "MediaRecorder";
例如上面代码,被static修饰的加载lib的代码,作用是指即使有多个MediaRecorder对象,也只加载一次media_jni吗?即static修饰的代码只执行一遍。
可以这么理解吗?
别瞎说。
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
测试了下,的确与new对象无关,加载时就执行了,而且只在加载时执行。