java类加载与代码块

类加载:能不加载就不加载
只会加载一次
加载子类会先加载父类
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();
 }
 
}

 

发布了22 篇原创文章 · 获赞 8 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章