首頁 > Java > java教程 > 主體

三個案例,解讀靜態程式碼區塊和建構程式碼區塊

巴扎黑
發布: 2017-06-26 09:30:08
原創
1594 人瀏覽過

一、靜態程式碼區塊和非靜態程式碼區塊進行簡單的總結

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板