變量的作用域規定了變量所能使用的范圍,只有在作用域范圍內變量才能被使用。根據變量聲明地點的不同,變量的作用域也不同。
根據作用域的不同,一般將變量分為不同的類型:成員變量和局部變量。下面對這幾種變量進行詳細說明。
Java 的成員變量有兩種,分別是全局變量和靜態變量(類變量)。定義在方法體和語句塊之外,不屬于任何一個方法,作用域是整個類。
假設在一個類中聲明了 4 個變量,下面編寫一個測試類輸出引起變量的值改變的示例代碼。
變量聲明代碼如下所示:
測試類代碼如下所示:
運行效果如下圖 1 所示:
在本例的第一段代碼中定義了 4 個成員變量,由輸出結果可以看出,name 和 age 顯示系統默認初始化的值,website 和 URL 顯示初始化的值。且用 static final 修飾的變量必須賦予初始值。
局部變量是指在方法或者方法代碼塊中定義的變量,其作用域是其所在的代碼塊??煞譃橐韵氯N:
方法參數變量(形參):在整個方法內有效。
方法局部變量(方法內定義): 從定義這個變量開始到方法結束這一段時間內有效。
代碼塊局部變量(代碼塊內定義):從定義這個變量開始到代碼塊結束這一段時間內有效。
局部變量在使用前必須被程序員主動初始化值。
聲明兩個局部變量并輸出其值,其實現代碼如下:
上述實例中定義了 a 和 s 兩個局部變星,其中 int 類型的 a 的作用域是整個 main() 方法,而 int 類型的變量 s 的作用域是 if 語句的代碼塊內,其執行結果如圖 2 所示:
如果在 if 方法外調用變量 s,則會報無法解析該變量的錯誤。
作為方法參數聲明的變量的作用域是整個方法。
聲明一個方法參數變量,實現代碼如下:
在上述實例中定義了一個 testFun() 方法,該方法中包含一個 int 類型的參數變量 n,其作用域是 testFun() 方法體內。當調用方法時傳遞進了一個參數 3,因此其輸出控制臺的 n 值是 3。
代碼塊局部變量常用于 try catch 代碼塊中,成為異常處理參數變量。
異常處理參數變量的作用域是在異常處理塊中,該變量是將異常處理參數傳遞給異常處理塊,與方法參數變量類似。
聲明一個異常處理語句,實現代碼如下:
在上述實例中定義了異常處理語句,異常處理塊 catch 的參數為 Exception 類型的變量 e,作用域是整個 catch 塊。