日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

聲明

本文有牛旦教育原創,首發頭條,轉載請注明來源,所有權保留。

我們知道類中的成員(包括靜態和非靜態的字段和方法)作用域對外(不同的包和不同的類)是依賴類的訪問控制等級的,對內(同類內)則都可訪問。因為類成員變量對類來說是全局變量,即在成員變量定義的代碼塊(類)內都是有效的。除了全局變量,還有局部變量。本文的4條規則,主要是針對局部變量而言的。

提示:關于類成員訪問控制等級——也有稱為訪問權限的,在JAVA中有4類,每個成員的訪問等級只能選擇其中的一種。如下下表所示:

細微處見真章:Java變量作用域的這4條鐵規須謹記

表1:類中的成員訪問級別

所謂局部變量,就是在方法、構造函數或塊中聲明的變量。在方法中聲明的局部變量僅在方法執行期間存在。由于局部變量僅存在臨時的持續時間,因此不能在方法、構造函數或聲明塊的外部使用。方法的形式參數被視為局部變量。當方法被調用時,以及在執行方法的主體之前,它們都使用實際的參數值進行初始化。編碼時,我們需要遵守以下有關使用局部變量的規則。

細微處見真章:Java變量作用域的這4條鐵規須謹記

 

規則#1

局部變量默認情況下未初始化。請注意,此規則與實例/類變量初始化的規則相反。當聲明一個實例/類變量時,它會使用默認值進行初始化(自動初始化)。來看下面add()方法的以下部分定義:

	int add(int n1, int n2) {
	 int sum;
	 /* sum的值是設么? 不知道,因為還沒初始化它. */
	 /* 其它代碼... */
	}

規則#2

這條規則是第一條規則的分支。 在程序分配一個值之前,局部變量不能被訪問。 下面的代碼片段會產生編譯時錯誤,因為它會在分配值之前嘗試打印本地變量sum的值。 請注意,Java運行時必須讀取(或訪問)sum變量的值才能打印它。

	int add(int n1, int n2) {
	int sum;
	// 編譯時錯誤. 不能讀取sum 值,因為還沒被賦值.
	System.out.println(sum);
	}

下面的代碼段編譯良好,因為局部變量sum在被讀取前已被初始化:

	int add(int n1, int n2) {
	int sum = 0;
	System.out.println(sum); // 編譯運行正常,輸出 0
	}

規則#3

局部變量可以在方法體內的任何地方聲明。 但是,它必須在使用之前進行聲明。 這條規則的含義是,你不需要在方法體的開頭聲明所有的局部變量。 在更靠近使用變量的地方來聲明變量是一個好習慣。

局部變量不允許同名。其實,同一代碼塊內(不含內嵌代碼塊)也不允許變量同名,而不論是否是不同類型。

規則#4

局部變量隱藏實例變量和具有相同名稱的類變量的名稱。何為隱藏?就是說在類內定義了成員變量name,又定義了局部變量name,再在方法體或代碼塊使用name變量,則程序會自動選擇“最近”定義的變量name。也就是說同名的變量名,會以局部變量為準來參與相關的邏輯處理。如果本想使用成員變量的,這么一來,結果可能不是想要的。

隱藏這一現象適用于所有代碼塊,即小區塊代碼內的局部變量,會隱藏大區塊同名的變量。

變量作用域示例:

 public class VariableScope{
 private static int varNumber = 4 ;
 
 static void SayNumber(int varNumber){
 System.out.println("SayNumber(int varNumber):"+varNumber) ;
 int varNum = 2 ;//只能方法內使用
 System.out.println("Another varNum:"+varNum) ;
 }
 public static void main(String[] args){
 int varNumber = 9 ;
 SayNumber(varNumber) ;
 {
 int varNum = 3 ;
 System.out.println("Block Code:"+ varNum) ;
 }
 //System.out.println("block variable varNum(3):"+varNum) ;//編譯錯誤
 System.out.println("main 內(9):"+varNumber) ;
 }
}

其實,所有的變量作用域都是跟Java的JVM內部管理機制以及內存模型有關的,這里就不展開了,前面有文章說過這些,有興趣的可以去看看:

分享到:
標簽:變量 作用 Java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定