1. 程式人生 > >JAVA-初步認識-第三章-局部代碼塊

JAVA-初步認識-第三章-局部代碼塊

找不到 註意 釋放 image 執行 生命周期 println 隨著 logs

一. 代碼塊的定義

任何大括號封裝的,得到的都是一個區塊,可以稱為代碼塊。如果在代碼塊的前面加上if(), 那麽這就叫做if代碼塊;如果加的是

public static void main(String[] args),那麽這就叫做主函數代碼塊。這些都相當於代碼塊的名稱。如果什麽都不加,那麽就稱為局部代碼塊。

技術分享

註意:上面的例子為什麽能夠輸出if語句的A,條件表達式為false,為什麽能夠成立?

二. 深入解析局部代碼塊

有名字的都叫什麽名字代碼塊,如i類代碼塊,主函數代碼塊,if代碼塊,如果代碼塊前面沒有語句,那麽就叫做局部代碼塊。

有局部代碼塊,也有局部變量。

舉例來解析局部變量。下面的源代碼在運行的時候,DOS會報錯,顯示System.out.println("over......."+m)語句找不到符號m,

究其原因就在於m是上面局部代碼塊裏的變量,不適合於外面的範圍,變量有自己的作用域。這種沒有名字的局部代碼塊的作用就體現在這,雖然運行起來和順序結構很相似,但還是有區別的。

{}的作用就是能劃定作用範圍,只在括號內起作用。

探討一下例子背後的原理:jvm執行到int m=89;時,內存中會開辟一小塊區間,命名為m,賦值為89,隨著輸出語句的結束以及}符號的到來,名為m的小塊內存就被會釋放,也就是說不存在叫m的內存塊。為什麽m內存塊會被釋放,原因在於m能夠作用的範圍結束了。如果繼續保留,就會浪費內存空間。jvm運行到System.out.println("over......."+m)語句時,壓根就沒有叫做m的內存塊變量了。

這裏再強調一下局部代碼塊的作用:如果程序中定義的變量非常多,但是變量的作用範圍非常小,在這裏作用後,後面就不再起作用,為了節約內存,我們就會將此變量的運算封裝在局部代碼塊裏,運算到後面的時候,此變量就會被釋放,節省內存。這裏還要說一點,雖然計算機內存很大,但是虛擬機可操作的內存並不大,因此,必要的時候,就要優化程序。

局部代碼塊可以定義局部變量的生命周期。

技術分享

借由局部代碼塊的概念,我們來探討一下局部變量。

註意:只要是主函數裏的變量,都被稱作局部變量。

JAVA-初步認識-第三章-局部代碼塊