1. 程式人生 > >java中的程式碼塊理解

java中的程式碼塊理解

程式碼塊:就是用{}括起來到部分。根據應用的不同分為4類:普通程式碼塊、構造塊、靜態程式碼塊、同步程式碼塊。

1.普通程式碼塊:定義在方法中的程式碼塊。

如:

[java] view plaincopy
  1. publicclass Ex22 {     
  2.     publicstaticvoid main(String[] args){     
  3. //      普通程式碼塊   
  4.         {     
  5.             int i = 3;     
  6.             System.out.println("區域性變數為 " + i);     
  7.         }     
  8.         int i = 5;     
  9.         System.out.println("相對上面的  i 來說是全域性的變數 " + i);     
  10.     }     
  11. }     
  12. //區域性變數為 3   
  13. //相對上面的  i 來說是全域性的變數 5 

2.構造塊:直接在類中編寫的程式碼塊。

[java] view plaincopy
  1. class Demo5{     
  2.     {     
  3.         System.out.println("構造塊");     
  4.     }     
  5.     public Demo5(){     
  6.         System.out.println("構造方法"
    );     
  7.     }     
  8.     {     
  9.         System.out.println("構造方法後的構造塊");     
  10.     }     
  11. }     
  12. publicclass Ex22 {     
  13.     publicstaticvoid main(String[] args){     
  14.         new Demo5();     
  15.         new Demo5();     
  16.     }     
  17. }     
  18. //構造塊   
  19. //構造方法後的構造塊   
  20. //構造方法   
  21. //構造塊   
  22. //構造方法後的構造塊   
  23. //構造方法  

物件被例項化一次構造塊就執行一次;

構造塊優先執行比構造方法.

3.靜態程式碼塊:static 關鍵字宣告的程式碼塊.

[java] view plaincopy
  1. class Demo5{     
  2.     {     
  3.         System.out.println("1構造塊");     
  4.     }     
  5.     public Demo5(){     
  6.         System.out.println("2構造方法");     
  7.     }     
  8.     {     
  9.         System.out.println("3構造方法後的構造塊");     
  10.     }     
  11.     static {     
  12.         System.out.println("4靜態程式碼塊");     
  13.     }     
  14. }     
  15. publicclass Ex22 {     
  16.     static {     
  17.         System.out.println("在主方法類中定義的程式碼塊");     
  18.     }     
  19.     publicstaticvoid main(String[] args){     
  20.         new Demo5();     
  21.         new Demo5();     
  22.     }     
  23. }     
  24. //在主方法類中定義的程式碼塊   
  25. //4靜態程式碼塊   
  26. //1構造塊   
  27. //3構造方法後的構造塊   
  28. //2構造方法   
  29. //1構造塊   
  30. //3構造方法後的構造塊   
  31. //2構造方法 

主方法靜態程式碼塊優先於主方法,

在普通類中靜態塊優先於構造塊,

在普通類中構造塊優先於構造方法,

靜態塊只例項化一次。