java語言基礎之4種代碼塊以及構造函數比較大集合-java基礎精品筆記-作者:逝秋

class Demo
{
 private static int day=0;
 private static int age=0;
  public Demo()
 {
   day=day+1;
  System.out.println("構造函數day="+day);
 }


 {

  age=age+1;
  System.out.println("構造代碼塊age="+age);
 }
 static
 {
  
  System.out.println("靜態代碼塊");
 }


 public static void main(String[] args) 
 {

  Demo v=new Demo();//此時爲age爲1
  System.out.println("new實例第一個對象day="+v.day);
  System.out.println("new實例第一個對象age="+v.age+"\n");
  Demo v1=new Demo();//此時age=?
  System.out.println("new實例第2個對象day="+v1.day);
  System.out.println("new實例第2個對象age="+v1.age);
  System.out.println("類名調用static變量 age="+Demo.age);
  System.out.println("類名調用static變量 age="+Demo.day);
 }
}

運行結果:


 

筆記:
java中四種代碼塊:
1.普通代碼塊:直接在一個方法中出現的{}就稱爲普通代碼塊
2.構造代碼塊:直接在類中定義的沒有加static關鍵字的代碼塊{}稱爲構造代碼塊
3.靜態代碼塊:使用static關鍵字聲明的代碼塊稱爲靜態代碼塊,靜態塊的主要目的是用來爲靜態屬性(類)初始化.靜態代碼塊——>構造代碼塊——>構造方法(構造函數)的執行,靜態代碼塊只執行一次!
4.同步代碼塊:

比較:靜態代碼塊與靜態方法
1.靜態代碼塊是自動執行的;
2.靜態方法是被調用的時候才執行的

靜態代碼塊與非靜態代碼塊:
1.靜態代碼塊只給第一次類的實例初始化
2.非靜態代碼塊每次類的實例都初始化(執行)
非靜態代碼塊與構造函數:
1.構造函數是給對應的對象進行初始。因爲:一個類中可以有多個構造函數,至於類的實例(創建對象)是根據傳入的形式參數(形參個數、形參類型)而決定執行哪一個構造函數,
2.非靜態構造代碼塊是給所有對象進行初始化。每創建一個對象(類的實例)都會執行非靜態代碼塊
static:
1.static修飾變量又名靜態變量(全局變量):
 a.在類中定義static變量,該類中函數可以直接調用(格式:直接調用變量名)
 b.任何方法中不可以定義靜態變量(用static修飾)
 c.在本類中調用Demo類中的static int a;格式:類名.變量名(Demo.a)
 d.static修飾的變量,在類被載入時創建,隨類的結束才釋放

內存:靜態變量位於方法區,被類的所有實例共享。靜態變量可以直接通過類名進行訪問,其生命週期取決於類的生命週期

本人初學,如有錯誤請留言並指正。謝謝

 

轉載請註明出處,謝謝!作者:逝秋http://blog.csdn.net/vvqiu

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章