亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

聲明

本文有牛旦教育原創(chuàng),首發(fā)頭條,轉(zhuǎn)載請(qǐng)注明來(lái)源,所有權(quán)保留。

我們知道類中的成員(包括靜態(tài)和非靜態(tài)的字段和方法)作用域?qū)ν猓ú煌陌筒煌念悾┦且蕾囶惖脑L問(wèn)控制等級(jí)的,對(duì)內(nèi)(同類內(nèi))則都可訪問(wèn)。因?yàn)轭惓蓡T變量對(duì)類來(lái)說(shuō)是全局變量,即在成員變量定義的代碼塊(類)內(nèi)都是有效的。除了全局變量,還有局部變量。本文的4條規(guī)則,主要是針對(duì)局部變量而言的。

提示:關(guān)于類成員訪問(wèn)控制等級(jí)——也有稱為訪問(wèn)權(quán)限的,在JAVA中有4類,每個(gè)成員的訪問(wèn)等級(jí)只能選擇其中的一種。如下下表所示:

細(xì)微處見(jiàn)真章:Java變量作用域的這4條鐵規(guī)須謹(jǐn)記

表1:類中的成員訪問(wèn)級(jí)別

所謂局部變量,就是在方法、構(gòu)造函數(shù)或塊中聲明的變量。在方法中聲明的局部變量?jī)H在方法執(zhí)行期間存在。由于局部變量?jī)H存在臨時(shí)的持續(xù)時(shí)間,因此不能在方法、構(gòu)造函數(shù)或聲明塊的外部使用。方法的形式參數(shù)被視為局部變量。當(dāng)方法被調(diào)用時(shí),以及在執(zhí)行方法的主體之前,它們都使用實(shí)際的參數(shù)值進(jìn)行初始化。編碼時(shí),我們需要遵守以下有關(guān)使用局部變量的規(guī)則。

細(xì)微處見(jiàn)真章:Java變量作用域的這4條鐵規(guī)須謹(jǐn)記

 

規(guī)則#1

局部變量默認(rèn)情況下未初始化。請(qǐng)注意,此規(guī)則與實(shí)例/類變量初始化的規(guī)則相反。當(dāng)聲明一個(gè)實(shí)例/類變量時(shí),它會(huì)使用默認(rèn)值進(jìn)行初始化(自動(dòng)初始化)。來(lái)看下面add()方法的以下部分定義:

	int add(int n1, int n2) {
	 int sum;
	 /* sum的值是設(shè)么? 不知道,因?yàn)檫€沒(méi)初始化它. */
	 /* 其它代碼... */
	}

規(guī)則#2

這條規(guī)則是第一條規(guī)則的分支。 在程序分配一個(gè)值之前,局部變量不能被訪問(wèn)。 下面的代碼片段會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤,因?yàn)樗鼤?huì)在分配值之前嘗試打印本地變量sum的值。 請(qǐng)注意,Java運(yùn)行時(shí)必須讀取(或訪問(wèn))sum變量的值才能打印它。

	int add(int n1, int n2) {
	int sum;
	// 編譯時(shí)錯(cuò)誤. 不能讀取sum 值,因?yàn)檫€沒(méi)被賦值.
	System.out.println(sum);
	}

下面的代碼段編譯良好,因?yàn)榫植孔兞縮um在被讀取前已被初始化:

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

規(guī)則#3

局部變量可以在方法體內(nèi)的任何地方聲明。 但是,它必須在使用之前進(jìn)行聲明。 這條規(guī)則的含義是,你不需要在方法體的開(kāi)頭聲明所有的局部變量。 在更靠近使用變量的地方來(lái)聲明變量是一個(gè)好習(xí)慣。

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

規(guī)則#4

局部變量隱藏實(shí)例變量和具有相同名稱的類變量的名稱。何為隱藏?就是說(shuō)在類內(nèi)定義了成員變量name,又定義了局部變量name,再在方法體或代碼塊使用name變量,則程序會(huì)自動(dòng)選擇“最近”定義的變量name。也就是說(shuō)同名的變量名,會(huì)以局部變量為準(zhǔn)來(lái)參與相關(guān)的邏輯處理。如果本想使用成員變量的,這么一來(lái),結(jié)果可能不是想要的。

隱藏這一現(xiàn)象適用于所有代碼塊,即小區(qū)塊代碼內(nèi)的局部變量,會(huì)隱藏大區(qū)塊同名的變量。

變量作用域示例:

 public class VariableScope{
 private static int varNumber = 4 ;
 
 static void SayNumber(int varNumber){
 System.out.println("SayNumber(int varNumber):"+varNumber) ;
 int varNum = 2 ;//只能方法內(nèi)使用
 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) ;//編譯錯(cuò)誤
 System.out.println("main 內(nèi)(9):"+varNumber) ;
 }
}

其實(shí),所有的變量作用域都是跟Java的JVM內(nèi)部管理機(jī)制以及內(nèi)存模型有關(guān)的,這里就不展開(kāi)了,前面有文章說(shuō)過(guò)這些,有興趣的可以去看看:

分享到:
標(biāo)簽:變量 作用 Java
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定