一、靜態程式碼區塊和非靜態程式碼區塊進行簡單的總結
1.靜態程式碼區塊:
靜態程式碼區塊是在當類別被載入(記憶體)時最先被呼叫的,且之被執行一次,靜態區塊常用來執行類別屬性的初始化。執行類別的載入之前就會被呼叫。
2.非靜態程式碼區塊:
非靜態程式碼區塊是在當類別的物件被建立載入(記憶體)時最先被呼叫的,每建立一個對象,即每載入一個對象,非靜態程式碼區塊都執行一次。執行類別物件的載入之前就會呼叫。
3.靜態方法、非靜態方法:都是呼叫時,才執行的。靜態方法屬於類別的,載入完類別就可以呼叫靜態方法;非靜態方法是屬於物件的,載入完物件就可以呼叫非靜態方法。
二、相關範例示範
1 public class Cc { 2 public static void main(String[] args) { 3 test p=new test(); 4 } 5 } 6 7 class test { 8 test() { //在类对象创建的时候就开始执行。简称创建即执行。 9 System.out.println("这是构造函数");10 }11 12 { //构造代码块,执行在构造函数之前,每当在创建类对象的时候都执行。13 System.out.println("这是构造代码块");14 }15 16 static { //静态代码块,最早执行,且值执行一次。17 System.out.println("这是静态代码块");18 }19 }
#列印結果:
##示範當被呼叫兩次的時候,會發生什麼列印結果。加深對靜態程式碼塊的理解。1 public class Ccc { 2 public static void main(String[]args) 3 { 4 MyTest p=new MyTest(); 5 MyTest p2=new MyTest();//两次调用 6 } 7 } 8 class MyTest{ 9 10 MyTest(){11 System.out.println("这是构造函数");12 }13 14 {15 System.out.println("这是构造代码块");16 }17 18 static{19 System.out.println("这是静态代码块");20 21 }22 }
1 class Cccc { 2 public static void main(String[] args) { 3 new Person(77); 4 new Person(); 5 } 6 } 7 8 class Person { 9 10 Person() { 11 System.out.println("a"); 12 } 13 14 15 Person(int x) { //注意带参数了!! 16 System.out.println(x); 17 } 18 19 static { 20 System.out.println("b"); 21 } 22 23 { 24 System.out.println("c"); 25 } 26 }
以上是三個案例,解讀靜態程式碼區塊和建構程式碼區塊的詳細內容。更多資訊請關注PHP中文網其他相關文章!