类加载:能不加载就不加载
只会加载一次
加载子类会先加载父类
new对象时
访问类的静态成员
访问父类不会加载子类
访问公开静态常量如果编译时能决定此常量的值则不会类加载;编译时不能决定此常量的值则会类加载。
静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次;
非静态代码块,在创建对象的时候(即new一个对象的时候)执行,每次创建对象都会执行一次
package test;
public class TestStatic_Dynamic_Block {
static String name;
final static int id = 5;
{
System.out.println("dynamic block");
}
static
{
System.out.println("static block");
}
void m1()
{
System.out.println("m1 method start work ...");
}
public static void main(String[] args) {
System.out.println(TestStatic_Dynamic_Block.id);
System.out.println(TestStatic_Dynamic_Block.name);
name = "haha";
System.out.println(TestStatic_Dynamic_Block.name);
new TestStatic_Dynamic_Block();
}
}