摘要:代碼塊我們主要觀察普通代碼塊構造塊靜態塊的主要作用。代碼實例構造方法類的構造方法將代碼塊寫在了類里面類的構造塊控制臺輸出類的構造塊類的構造方法此時實例化類對象時,雖然執行的是類的構造方法,但是構造塊里面的代碼也執行了。
代碼塊
我們主要觀察普通代碼塊、構造塊、靜態塊的主要作用。
在程序編寫之中可以直接使用"{}" 定義一段語句,那么根據此部分定義的位置以及關鍵字的不同可以分為以下幾種:
普通代碼塊
構造塊
靜態塊
不過,我們在寫程序的時候,盡量不去使用代碼塊。
普通代碼塊如果說一個代碼塊寫在了方法里,那么就稱它了普通代碼塊。
代碼實例
下面說的變量,只是相對關系。
public class TestDemo { public static void main(String[] args) { {// 普通代碼塊 int num = 10; //局部變量 System.out.println(num); } int num = 100; // 相對的上面的局部變量,為全局變量 System.out.println(num); } }
實際上普通代碼塊就是為了防止在方法里面編寫的代碼過多時,有可能產生的變量重名。對一個方法的代碼進行局部分割。
構造塊如果說現在將一個代碼塊寫在了一個類里面,那么我們就稱為構造塊。
代碼實例
class Book{ public Book() { // 構造方法 System.out.println("【A】 Book 類的構造方法"); } {// 將代碼塊寫在了類里面 System.out.println("【B】 Book 類的構造塊"); } } public class TestDemo { public static void main(String[] args) { new Book(); } }
控制臺輸出
【B】 Book 類的構造塊 【A】 Book 類的構造方法
此時實例化 Book 類對象時,雖然執行的是 Book 類的構造方法,但是構造塊里面的代碼也執行了。并且會發現構造塊的代碼是優先于 構造方法執行。
代碼實例
class Book{ public Book() { // 構造方法 System.out.println("【A】 Book 類的構造方法"); } {// 將代碼塊寫在了類里面 System.out.println("【B】 Book 類的構造塊"); } } public class TestDemo { public static void main(String[] args) { new Book(); new Book(); new Book(); } }
控制臺輸出
【B】 Book 類的構造塊 【A】 Book 類的構造方法 【B】 Book 類的構造塊 【A】 Book 類的構造方法 【B】 Book 類的構造塊 【A】 Book 類的構造方法
從控制臺的輸出可以看到,每當我們實例化一個 Book 類時,我們的構造塊都會被執行一次。
靜態塊如果我們的代碼塊使用了 static 進行定義的話,那么就被稱為靜態塊。我們分為兩種情況來看。
在非主類中使用代碼實例
class Book{ public Book() { // 構造方法 System.out.println("【A】 Book 類的構造方法"); } {// 將代碼塊寫在了類里面 System.out.println("【B】 Book 類的構造塊"); } static {// 將代碼塊寫在了類里面 System.out.println("【C】 Book 類的構造塊"); } } public class TestDemo { public static void main(String[] args) { new Book(); new Book(); new Book(); } }
控制臺輸出
【C】 Book 類的構造塊 【B】 Book 類的構造塊 【A】 Book 類的構造方法 【B】 Book 類的構造塊 【A】 Book 類的構造方法 【B】 Book 類的構造塊 【A】 Book 類的構造方法
從上面我們可以看到,靜態塊只是執行了一次,并且是優先于構造方法和構造塊。也就是說,不管實例化多少個對象,靜態塊只執行一次。
在主類中使用代碼實例
public class TestDemo { static { System.out.println("**********"); } public static void main(String[] args) { System.out.println("main()"); } }
控制臺輸出
********** main()
從控制臺的輸出,我們就可以知道,static 靜態塊 是優先于 main 方法執行的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76746.html
以下是Java技術棧微信公眾號發布的關于 Java 的技術干貨,從以下幾個方面匯總。 Java 基礎篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎篇 8張圖帶你輕松溫習 Java 知識 Java父類強制轉換子類原則 一張圖搞清楚 Java 異常機制 通用唯一標識碼UUID的介紹及使用 字符串...
摘要:方法區存儲不變的東西類加載信息,靜態變量,字符串常量。通用分代垃圾回收基礎時只需要知道有這幾種方法即可四內存分析靜態變量,靜態方法,靜態初始化塊靜態變量與方法不需要具體的對象就可以調用用類名調用,靜態初始化塊后就會調用了。 一:面向對象與面向過程 籠統說,一個流程簡單一個復雜,面向過程好比開車上路,可以簡單羅列出幾個動作:上車,系安全帶,點火,出發;向過程好比造出一輛汽車,肯定不能...
閱讀 2676·2023-04-25 18:10
閱讀 1617·2019-08-30 15:53
閱讀 2811·2019-08-30 13:10
閱讀 3228·2019-08-29 18:40
閱讀 1134·2019-08-23 18:31
閱讀 1209·2019-08-23 16:49
閱讀 3408·2019-08-23 16:07
閱讀 883·2019-08-23 15:27