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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章