一. 代碼塊的定義
任何大括號封裝的,得到的都是一個區塊,可以稱為代碼塊。如果在代碼塊的前面加上if(), 那么這就叫做if代碼塊;如果加的是
public static void main(String[] args),那么這就叫做主函數代碼塊。這些都相當於代碼塊的名稱。如果什么都不加,那么就稱為局部代碼塊。
注意:上面的例子為什么能夠輸出if語句的A,條件表達式為false,為什么能夠成立?還是自己編寫的時候不注意。if(條件表達式)后面帶了分號,將if代碼塊變為了局部代碼塊。
二. 深入解析局部代碼塊
有名字的都叫xxx代碼塊,如類代碼塊,主函數代碼塊,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的內存塊變量了。
這里再強調一下局部代碼塊的作用:如果程序中定義的變量非常多,但是變量的作用范圍非常小,在這里作用后,后面就不再起作用,為了節約內存,我們就會將此變量的運算封裝在局部代碼塊里,運算到后面的時候,此變量就會被釋放,節省內存。這里還要說一點,雖然計算機內存很大,但是虛擬機可操作的內存並不大,因此,必要的時候,就要優化程序。
局部代碼塊可以定義局部變量的生命周期。
借由局部代碼塊的概念,我們來探討一下局部變量。
注意:只要是主函數里的變量,都被稱作局部變量。沒有學到后面的知識點,現有的觀點來看,類和主函數算是很高的層面,但實際上只是一個更大整體中的一部分。
總結:由眾多判斷結構if語句引出的代碼塊概念。