Java零基礎(chǔ)快速入門|變量

本文章主要內(nèi)容:
字面量
變量概述
使用變量
變量分類
變量作用域
難點(diǎn)疑惑
學(xué)習(xí)目標(biāo):
理解變量本質(zhì)是什么,在開發(fā)中有什么用?
變量三要素是什么?
怎么聲明變量?
怎么給變量賦值?
變量是如何分類的?
變量的作用域?
知識(shí)框架

字面量
字面量就是數(shù)據(jù)/數(shù)值,例如:1234,true,”abc”,?中?,3.14。在現(xiàn)實(shí)生活中每天都會(huì)接 觸到數(shù)據(jù),例如:你今天的體重是 86Kg,你今天花了 500?元,買了個(gè)西瓜重量是 8.6Kg,外面明明是晴天,你卻說狂風(fēng)暴雨,你說的是假話(false),你明明喜歡她,卻嘴上說不喜歡, 撒謊(false)。
軟件其實(shí)就是為了解決現(xiàn)實(shí)生活當(dāng)中的問題,解決生活當(dāng)中的問題其實(shí)就是處理生活當(dāng)中的數(shù)據(jù),一門編程語言首先要能夠表示數(shù)據(jù)才可以處理數(shù)據(jù),所以 Java 程序通過字面量來表示數(shù)據(jù)。
在編程語言中數(shù)據(jù)一般會(huì)被分門別類,所以每個(gè)數(shù)據(jù)都是有數(shù)據(jù)類型的,不同的數(shù)據(jù)類型會(huì)分配不同大小的內(nèi)存空間去存儲(chǔ)它。
數(shù)據(jù)被分為:整數(shù)型、浮點(diǎn)型、字符型、布爾型、字符串型等。
整數(shù)型(數(shù)字):1、2、100、-2
浮點(diǎn)型(數(shù)字,帶小數(shù)):1.0、2.0、3.14
字符型(文字,單個(gè)字符):?a?、?中?
布爾型(真假):true、false
字符串型(文字,多個(gè)字符):”你好呀童鞋,歡迎來到動(dòng)力節(jié)點(diǎn)!”
需要注意的是,java 中規(guī)定字符型字面量必須采用半角的單引號(hào)括起來,而字符串型字面量必須使用半角雙引號(hào)括起來。這是一個(gè)語法規(guī)定,不然編譯器就報(bào)錯(cuò)了。
接下來,我們一起來找出以下代碼中哪些是字面量吧?

通過以上的代碼我們可以看到這些數(shù)據(jù),或者說可以看到這些字面量:
"小明的體重=":字符串型字面量
86:整數(shù)型字面量
"kg":字符串型字面量
"圓周率=":字符串型字面量
3.1415926:浮點(diǎn)型字面量
true、false:都是布爾型字面量,表示真和假
'男'、 'a':都是字符型字面量
"你的對(duì)手在看書!"、"你的閨蜜在減肥!"、"你的仇人在磨刀!"、"隔壁老王在練腰! ??"、"你還不趕緊抓緊時(shí)間,還在這愣著干啥呀?。。?/span>":這些都是字符串型字面量
?
以上程序的運(yùn)行結(jié)果如下圖所示:

接下來,我們?cè)倏匆欢未a,找出以下程序中字面量屬于哪種類型,請(qǐng)看代碼:

通過代碼我們可以看到這些字面量:'9'、9、"100"、100、"3.1415926"、3.1415926、"true"、true,其中:
'9'由于帶有單引號(hào)則屬于字符型字面量
9??屬于整數(shù)型字面量
"100"由于帶有雙引號(hào)則屬于字符串型字面量
100??屬于整數(shù)型字面量
"3.1415926"由于帶有雙引號(hào)則屬于字符串型字面量
3.1415926 屬于浮點(diǎn)型字面量
"true"帶有雙引號(hào)則屬于字符串型字面量
true 屬于布爾型字面量
接下來,再看一段代碼,分析以下程序存在什么問題?

以上程序的編譯結(jié)果如下圖所示:

以上程序?yàn)槭裁磿?huì)編譯報(bào)錯(cuò)呢,因?yàn)樵诔绦蛑?/span>abc?不是一個(gè)合法的字面量,abc?不是數(shù)字, 也不是布爾型,那我們只能將其看做字符串型,但Java中規(guī)定字符串型字面量必須使用雙引號(hào)括起來,這里沒有,所以程序是不符合語法規(guī)則的。故編譯報(bào)錯(cuò)。
接下來,我們?cè)僖黄饋砜匆欢纬绦颍?qǐng)看以下代碼:

我們對(duì)以上的程序進(jìn)行編譯,編譯結(jié)果請(qǐng)看下圖:

通過上圖我們可以看到編譯報(bào)錯(cuò)了,錯(cuò)誤信息的第一條是:未結(jié)束的字符文字,這是為什么呢,因?yàn)樵?/span>java??語言中字符型只能是單個(gè)字符,多個(gè)字符則是字符串,應(yīng)該使用雙引號(hào)括起來。以上程序中編譯器檢測(cè)到?ab?之后,發(fā)現(xiàn)以單引號(hào)開始,會(huì)認(rèn)為后面是一個(gè)字符,于是去a 后面找另一半單引號(hào),結(jié)果未找到結(jié)束的單引號(hào)(因?yàn)榻Y(jié)束的單引號(hào)在 b 后面),所以編譯器報(bào)錯(cuò)了,并且錯(cuò)誤信息是“未結(jié)束的字符文字”。
通過本小節(jié)的學(xué)習(xí),大家需要理解的是:什么是字面量。能夠知道字面量就是數(shù)據(jù),我們 軟件處理的就是數(shù)據(jù),不同類型的數(shù)據(jù)在程序中有不同的編寫方式,例如:字符型字面量必須 是單個(gè)字符,并且使用半角的單引號(hào)括起來。字符串型字面量必須是使用半角的雙引號(hào)括起來。布爾類型字面量只有兩個(gè)值,寫法是true??和false,true??表示真,false 表示假。而浮點(diǎn)型字面量則帶有小數(shù)點(diǎn)。
?
變量概述
變量是內(nèi)存當(dāng)中存儲(chǔ)數(shù)據(jù)最基本的單元,將數(shù)據(jù)(字面量)放到內(nèi)存當(dāng)中,給這塊內(nèi)存空
間起一個(gè)名字,這就是變量。所以變量就是內(nèi)存當(dāng)中的一塊空間,這塊空間有名字、有類型、有值,這也是變量必須具備的三要素。變量在內(nèi)存中的抽象圖形可以參考下圖:

在上圖當(dāng)中每一個(gè)抽象的橢圓就代表一個(gè)變量,其中 a、c、pi、sex 是4 個(gè)變量的名字(變量名只要是合法的標(biāo)識(shí)符即可),13、?好?、3.14、true 是 4 個(gè)變量中分別存儲(chǔ)的數(shù)據(jù)(字面量),int、char、double、boolean 是 4 ?個(gè)變量分別對(duì)應(yīng)的數(shù)據(jù)類型(int、char、double、boolean 等都是java 的關(guān)鍵字,聲明變量時(shí)用來指定變量的數(shù)據(jù)類型)。
數(shù)據(jù)類型在任何一門編程語言當(dāng)中都很重要,因?yàn)槌绦蛟谶\(yùn)行的過程中會(huì)通過不同的數(shù)據(jù)類型給數(shù)據(jù)分配不同大小的空間。有的數(shù)據(jù)類型占用的空間較小,但有的數(shù)據(jù)類型占用的空間就會(huì)很大。這也是符合現(xiàn)實(shí)的,在現(xiàn)實(shí)生活中有些數(shù)據(jù)較大,有些數(shù)據(jù)則較小。
變量要求“變量的數(shù)據(jù)類型”和變量中存儲(chǔ)的“數(shù)據(jù)(字面量)”必須類型是一致的,換 句話說,冰箱是用來存放小食品的,也就是說冰箱只能存放小食品,大象不能往冰箱里放,原 因是放不下,空間不合適。例如:int 類型就只能存下 4 個(gè)字節(jié)大小的整數(shù),再長一點(diǎn)兒放不下,比如long 類型的整數(shù)占有 8?個(gè)字節(jié),這樣的數(shù)據(jù)肯定是無法放到int 類型的變量當(dāng)中的。
所謂變量:可變化的量。它的意思是變量中存儲(chǔ)的數(shù)據(jù)不是一成不變的,是可以被改變的, 假設(shè)變量i 中之前存儲(chǔ)的數(shù)據(jù)是 10,我們可以將 10 換成 100,變量就是這個(gè)意思。
通過以上內(nèi)容的學(xué)習(xí),大家需要掌握一個(gè)變量是有三要素組成的,分別是:數(shù)據(jù)類型、變量名、存儲(chǔ)的值。其中存儲(chǔ)的值就是上一節(jié)講到的字面量。
使用變量
我們?cè)谑褂米兞恐靶枰冗M(jìn)行變量的聲明,那么聲明變量的語法格式是什么呢?請(qǐng)看:
數(shù)據(jù)類型 變量名;
以上則是聲明變量的語法格式,其中數(shù)據(jù)類型我們?cè)谙乱徽鹿?jié)會(huì)詳細(xì)講解,目前我們以“int”這種數(shù)據(jù)類型為例進(jìn)行學(xué)習(xí),int 表示整數(shù)類型(注意:int 是關(guān)鍵字,不能隨意寫,必須全部小寫)。
變量名只要符合標(biāo)識(shí)符命名規(guī)則即可,當(dāng)然也要見名知意,命名規(guī)范中還要求變量名首字母小寫,后面每個(gè)單詞首字母大寫。
請(qǐng)看以下代碼則表示聲明一個(gè) int 類型的變量age 用來存儲(chǔ)年齡數(shù)據(jù):

大家可以看到上面的代碼中這個(gè) age 變量的三要素當(dāng)中只具備了兩個(gè)要素:數(shù)據(jù)類型和變量名,此時(shí)的age 變量并沒有存儲(chǔ)數(shù)據(jù)(或者說沒有賦值),那么這個(gè)age 變量可以訪問嗎, 我們來試一下,請(qǐng)看代碼:

我們對(duì)上面的程序進(jìn)行編譯,請(qǐng)看下圖:

以上編譯錯(cuò)誤信息為:可能尚未初始化變量 age,這句話的意思是 age 變量還沒有初始化
(沒有賦值),也就是說變量age 中還沒有數(shù)據(jù),空間還沒有開辟出來,可見,java 語言中的變量要求必須先聲明,再賦值才能訪問(這個(gè)規(guī)則大家一定要記住)。
那么 java??語言中怎么給變量賦值呢?在Java 語言中給變量賦值需要采用賦值運(yùn)算符“=”,請(qǐng)看賦值的語法格式:
變量名 = ?值;
在以上的語法當(dāng)中,等號(hào)右邊的值其實(shí)就是數(shù)據(jù),我們之前所學(xué)的字面量就可以當(dāng)做“值”。其中的等號(hào)“=”是一種運(yùn)算符,它被稱為賦值運(yùn)算符,賦值運(yùn)算符右邊的表達(dá)式優(yōu)先級(jí)較高, 所以等號(hào)右邊先執(zhí)行,將執(zhí)行結(jié)果賦給左邊的變量。(注意:java??語言中的單等號(hào)不是用來判斷是否相等的,是為了完成賦值運(yùn)算的。)
接下來我們給age 變量賦值,請(qǐng)看以下代碼:

我們對(duì)以上的代碼進(jìn)行編譯并運(yùn)行,請(qǐng)看下圖結(jié)果:

可以看到,以上程序的運(yùn)行結(jié)果是在控制臺(tái)輸出了:20。這里需要注意的是,當(dāng)在 Java 程序中輸出某個(gè)變量的時(shí)候,會(huì)自動(dòng)輸出變量中所保存的值。以上的測(cè)試說明了我們的賦值是沒有問題的。
那么賦值運(yùn)算還有其他注意事項(xiàng)嗎?有的。
在進(jìn)行賦值運(yùn)算的時(shí)候,Java 中規(guī)定“值”的數(shù)據(jù)類型必須和“變量”的數(shù)據(jù)類型保持一致,也就是說 int 類型的變量只能存儲(chǔ)int 類型的數(shù)據(jù),不能存儲(chǔ)其他類型的數(shù)據(jù),我們來進(jìn)行一個(gè)簡(jiǎn)單的測(cè)試,請(qǐng)看以下代碼:

我們對(duì)以上的程序進(jìn)行編譯,請(qǐng)看下圖的編譯結(jié)果:

通過以上的編譯我們可以看出,程序的第四行出錯(cuò)了,錯(cuò)誤信息是:類型不兼容,這是因為編譯器檢測(cè)到age 變量是int 類型,只能存儲(chǔ)int 類型的數(shù)據(jù),結(jié)果賦給 age 變量的數(shù)據(jù)不是一個(gè)int 類型的數(shù)據(jù),而是一個(gè)帶有雙引號(hào)的字符串。
通過以上的測(cè)試證實(shí)了在進(jìn)行賦值運(yùn)算的時(shí)候,“值”的數(shù)據(jù)類型必須和“變量”的數(shù)據(jù)類型一致才可以。
變量賦值之后可以再次重新賦值嗎?當(dāng)然可以,要不然怎么能叫變量呢。請(qǐng)看以下代碼:

我們對(duì)以上的代碼進(jìn)行編譯和運(yùn)行,結(jié)果如下圖所示:

通過測(cè)試可以看到變量是可以重新賦值的。在以上的程序當(dāng)中,我們看到變量的聲明和賦值是分兩行代碼完成的,那么變量的聲明和賦值可以在一行上完成嗎,我們?cè)龠M(jìn)行一個(gè)簡(jiǎn)單的測(cè)試,請(qǐng)看以下代碼:

我們對(duì)以上的程序進(jìn)行編譯和運(yùn)行,請(qǐng)看運(yùn)行結(jié)果:

通過以上的測(cè)試,可以看出,變量的聲明和賦值是可以在一行上完成的,聲明變量的同時(shí)可以完成賦值運(yùn)算。
那么Java 允許一次聲明多個(gè)同類型的變量嗎(C++是允許的,Java 可以嗎)?請(qǐng)看以下代碼:

以上程序當(dāng)中,我們看到第三行代碼,一次聲明了 3?個(gè) int?類型的變量,并且分別進(jìn)行了賦值。我們對(duì)以上的程序進(jìn)行編譯和運(yùn)行,結(jié)果如下圖所示:

通過運(yùn)行結(jié)果可以看出,Java 是允許一次聲明多個(gè)同類型的變量的。我們將以上的代碼進(jìn)行一個(gè)簡(jiǎn)單的修改,請(qǐng)看修改之后的代碼:

對(duì)以上的程序進(jìn)行編譯,請(qǐng)看以下編譯結(jié)果:

我們可以看到程序編譯報(bào)錯(cuò)了,而錯(cuò)誤信息中顯示 a 變量和b 變量并沒有賦值,這說明了代碼“int a, b, c?= 400;”表示聲明了三個(gè)int 類型的變量,分別起名a、b、c,其中c 變量賦值400,而a 和b 是沒有賦值的,這里一定要注意,以上代碼并不表示給a、b、c?三個(gè)變量同時(shí)賦值 400。
接下來我們?cè)賮硌芯恳幌?,在同一個(gè)大括號(hào)當(dāng)中,可以聲明兩個(gè)同名的變量嗎?請(qǐng)看以下代碼:

我們對(duì)以上的代碼進(jìn)行編譯,請(qǐng)看下圖結(jié)果:

通過以上的編譯結(jié)果,可以看到第4 行出錯(cuò)了,結(jié)果也證實(shí)了在同一個(gè)大括號(hào)當(dāng)中不能同時(shí)聲明多個(gè)同名的變量。這是因?yàn)樵谕粋€(gè)大括號(hào)當(dāng)中表示在內(nèi)存的同一個(gè)域當(dāng)中,在同一塊區(qū)域上面有兩個(gè)名字都叫做age 的變量,這是不允許的,因?yàn)檫@樣程序在運(yùn)行的時(shí)候,java 虛擬機(jī)也不知道該訪問哪個(gè)變量了(好比說,你有兩個(gè)朋友,他們的倆的名字都叫張三,當(dāng)你們?nèi)齻€(gè)人同時(shí)在場(chǎng)的時(shí)候,你呼張三,其實(shí)他倆也不知道你在叫誰呢!)。
所以,同一個(gè)域中變量名不能重名,但是記?。鹤兞渴强梢灾匦沦x值的。比如以下代碼:

我們將以上代碼編譯并運(yùn)行,請(qǐng)看下圖結(jié)果:

最后我們?cè)賮砜匆幌?,在方法體當(dāng)中的代碼是否存在執(zhí)行順序,變量可以先訪問,后聲明嗎?請(qǐng)看以下代碼:

對(duì)以上程序進(jìn)行編譯,請(qǐng)看下圖編譯結(jié)果:

以上測(cè)試結(jié)果中顯示第3?行報(bào)錯(cuò)了,錯(cuò)誤信息是找不到符號(hào),換句話說age??變量是不存在的,通過這個(gè)測(cè)試得知,方法中的代碼是有執(zhí)行順序的,遵循自上而下的順序依次逐行執(zhí)行, 也說明了變量必須先聲明,然后才能使用。
通過本小節(jié)的學(xué)習(xí),大家需要掌握的是在Java?語言中變量如何聲明,怎么賦值。另外也要知道變量是可以重新賦值的,還有聲明和賦值可以分開完成,也可以一起完成,并且也可以一次聲明多個(gè)變量。還有就是在同一個(gè)域當(dāng)中變量名是不能重名的。方法當(dāng)中的代碼是有執(zhí)行順序的,遵循自上而下的順序依次逐行執(zhí)行。
變量分類
變量根據(jù)聲明的位置不同可以分為:局部變量和成員變量。
在方法體當(dāng)中聲明的變量以及方法的每一個(gè)參數(shù)都是局部變量。
在方法體外,類體內(nèi)聲明的變量稱為成員變量,成員變量聲明時(shí)如果使用 static 關(guān)鍵字修飾的為靜態(tài)成員變量(簡(jiǎn)稱靜態(tài)變量),如果沒有 static 關(guān)鍵字修飾則稱為實(shí)例成員變量(簡(jiǎn)稱實(shí)例變量),請(qǐng)看以下代碼:

在以上代碼當(dāng)中,sum 是和main 相似的方法,在sum 方法當(dāng)中a、b 都是方法上的參數(shù)屬于局部變量,在 sum 的方法體當(dāng)中聲明的 firstNum 屬于局部變量。大家也可以看到在sum 方法體外面聲明了兩個(gè)變量,一個(gè)是 x,一個(gè)是 y,這兩個(gè)變量都屬于成員變量,x 變量沒有使用static 修飾屬于實(shí)例變量,而y 屬于靜態(tài)變量。
局部變量只在方法體當(dāng)中有效,方法開始執(zhí)行的時(shí)候局部變量的內(nèi)存才會(huì)被分配,當(dāng)方法執(zhí)行結(jié)束之后,局部變量的內(nèi)存就釋放了。所以局部變量的生命周期非常短暫。
在本小節(jié)當(dāng)中,需要大家掌握的是,看到程序能夠找出哪些是局部變量,哪些是實(shí)例變量, 哪些是靜態(tài)變量即可,至于這個(gè)變量什么時(shí)候聲明為局部的,什么時(shí)候聲明為成員的,后面的 課程當(dāng)中會(huì)詳細(xì)介紹。
變量作用域
所謂變量的作用域就是變量的有效范圍。通過后面內(nèi)容的學(xué)習(xí)大家會(huì)更加明白,實(shí)際上局部變量、實(shí)例變量、靜態(tài)變量它們存儲(chǔ)在 Java 虛擬機(jī)的不同內(nèi)存區(qū)域上,所以變量是有作用域的。關(guān)于變量的有效范圍,在這里我給大家總結(jié)了一個(gè)口訣:出了大括號(hào)就不認(rèn)識(shí)了。
雖然這句話屬于大白話,但很實(shí)用。我們來測(cè)試一下,請(qǐng)看以下代碼:

在以上代碼中我們可以看到在main 方法中聲明了一個(gè)變量k,根據(jù)之前所學(xué)得知 k 變量是局部變量,只在本方法中有效(main 方法),那么在m 方法中是否可以訪問局部變量k 呢, 我們對(duì)以上程序進(jìn)行編譯,請(qǐng)看下圖結(jié)果:

通過以上的編譯結(jié)果可以看到第 6?行出錯(cuò)了,錯(cuò)誤信息找不到符號(hào),也就是說 k 變量是不存在的無法訪問的。這也印證了之前所說的那句話:出了大括號(hào)就不認(rèn)識(shí)了。
接下來我們對(duì)以上程序進(jìn)行修改,如果將變量聲明為靜態(tài)變量呢(這里不要糾結(jié)為什么聲明成靜態(tài)變量,后面會(huì)講),變量的作用域會(huì)發(fā)生改變嗎,請(qǐng)看以下代碼:

我們對(duì)以上代碼進(jìn)行編譯,并運(yùn)行,請(qǐng)看下圖結(jié)果:

我們可以看到編譯通過了,并且程序也正常運(yùn)行了。有同學(xué)說,為什么只輸出了main???方法中的k,而m 方法中的k 沒有輸出呢?
這是因?yàn)?/span>m 方法并沒有執(zhí)行,程序的執(zhí)行是從main 方法作為入口進(jìn)來執(zhí)行的,在 main 方法中并沒有手動(dòng)調(diào)用m 方法,所以 m 方法是不會(huì)執(zhí)行的。不過這個(gè)測(cè)試也印證了那句話:出了大括號(hào)就不認(rèn)識(shí)了,只要沒有出大括號(hào),變量就是有效的 可訪問的,以上程序聲明k 變量的位置在類體當(dāng)中,方法體在類體當(dāng)中包含,所以在以上的main 方法和m?方法中都是可以訪問k 變量的。
接下來我們對(duì)以上的程序進(jìn)一步修改,請(qǐng)看以下代碼:

看到以上代碼,我們發(fā)現(xiàn)在 main 方法當(dāng)中聲明了一個(gè)局部變量k,有同學(xué)可能會(huì)說,有兩個(gè)同名的變量k,這個(gè)程序編譯會(huì)報(bào)錯(cuò)的,因?yàn)樽兞棵荒苤孛?,如果你要是這么想的就錯(cuò)了, 我們之前確實(shí)講過變量名不能重名,但是我們指的是“在同一個(gè)域”當(dāng)中變量名不能重名,以 上程序聲明的兩個(gè)變量k??處在不同的域當(dāng)中,一個(gè)是類體域,一個(gè)是方法體域。
那么我們對(duì)以上程序進(jìn)行編譯并運(yùn)行,結(jié)果會(huì)是怎樣呢,請(qǐng)看下圖結(jié)果:

通過上圖我們看到程序不但編譯通過了,而且還運(yùn)行了,并且運(yùn)行的結(jié)果不是 100,而是300,這說明了Java 程序遵守“就近原則”,其實(shí)這個(gè)就近原則不止是 Java 語言中存在,大部分的編程語言都符合這個(gè)原則。也就是說以上程序在main 方法中訪問變量k 的話,訪問的是局部變量k,而不是靜態(tài)變量k。
那么有同學(xué)就要問了,m 方法中的k?訪問的是哪個(gè)呢?我們嘗試在main 方法中調(diào)用m 方法,讓m 方法執(zhí)行,來測(cè)試一下輸出結(jié)果,請(qǐng)看以下代碼:

以上main 方法當(dāng)中調(diào)用m 方法這段代碼大家可以先大概理解一下,方法調(diào)用這塊的知識(shí)點(diǎn)會(huì)在后續(xù)的內(nèi)容當(dāng)中講解。我們對(duì)以上程序進(jìn)行編譯并運(yùn)行,請(qǐng)看下圖結(jié)果:

通過以上的測(cè)試我們可以看到在m 方法中訪問的是靜態(tài)變量k,因?yàn)檩敵鼋Y(jié)果是 100,而不是 300。
在本小節(jié)當(dāng)中需要大家掌握的是變量的有效范圍,還是需要大家記住那句話:出了大括號(hào)就不認(rèn)識(shí)了。另外Java 遵循就近原則。
難點(diǎn)解惑
本章節(jié)內(nèi)容整體比較簡(jiǎn)單,沒有太多的難點(diǎn),不過對(duì)于初學(xué)者來說,還是有一定難度的, 尤其是變量的作用域這一小節(jié),關(guān)鍵是對(duì)變量作用域的理解。請(qǐng)看以下代碼:

我們對(duì)以上程序進(jìn)行編譯,請(qǐng)看下圖編譯結(jié)果:

通過以上的編譯結(jié)果可以看出,程序的第 7 行出現(xiàn)錯(cuò)誤,錯(cuò)誤信息表示變量i?不存在,這是因?yàn)樽兞?/span>i 的聲明位置是if 語句的大括號(hào)當(dāng)中,還是我們之前所說的那句話:出了大括號(hào)就不認(rèn)識(shí)了。這里的 i 變量在 if 語句的大括號(hào)執(zhí)行結(jié)束之后,內(nèi)存就會(huì)自動(dòng)釋放,它的作用域是語句塊級(jí)別的,生命周期更短。也就是說if 語句的大括號(hào)之外都不能訪問到變量i。那么,如果想在后續(xù)的程序中繼續(xù)使用變量i 應(yīng)該怎么辦呢?我們可以將i 變量的聲明位置修改一下, 請(qǐng)看代碼:

我們對(duì)以上的代碼進(jìn)行編譯并運(yùn)行,請(qǐng)看下圖結(jié)果:

以上程序之所以可以訪問i 變量,是因?yàn)?/span>i 變量的作用域修改成了方法體域的級(jí)別。擴(kuò)大了它的作用范圍。
?
小結(jié)
通過本章內(nèi)容的學(xué)習(xí),大家需要掌握變量應(yīng)該如何聲明,如何賦值,如何使用。需要理解變量就是內(nèi)存當(dāng)中存儲(chǔ)數(shù)據(jù)的一塊空間,它包括三要素:數(shù)據(jù)類型、變量名、值。另外要知道變量根據(jù)聲明的位置可以分為成員變量和局部變量,并且聲明位置不同作用域也是不同的。還需要注意在同一個(gè)域當(dāng)中變量名不能重名,不同的域,變量名可以相同,只不過?Java?遵循就近原則,會(huì)自動(dòng)訪問離它最近的數(shù)據(jù)。
最后附Java零基礎(chǔ)視頻教程給大家,配合學(xué)習(xí)效果更佳?。?/strong>

