JAVA-初步認識-第三章-局部代碼塊
一. 代碼塊的定義
任何大括號封裝的,得到的都是一個區塊,可以稱為代碼塊。如果在代碼塊的前面加上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-初步認識-第三章-局部代碼塊