教妹學(xué)Java:初識Java變量
我妹(親妹)今年上大學(xué)了,學(xué)的計(jì)算機(jī)編程,沒成想,她的一名老師竟然是我的讀者,我妹是又驚喜又恐慌,驚喜是她哥我的讀者群體還挺廣泛的嘛,恐慌的是萬一學(xué)不好豈不是很丟他哥的臉?
為了給妹妹全方位的支援,就有了《教妹學(xué) Java》這個(gè)專欄,希望我妹能通過這個(gè)專欄更快地掌握 Java 這門編程語言。同時(shí),也希望這個(gè)專欄能夠幫助到更多剛?cè)腴T的初學(xué)者,那就爽歪歪了。
“二哥,聽說 Java 變量在以后的日子里經(jīng)常用,能不能提前給我透露透露?”三妹咪了一口麥香可可奶茶后對我說。
“三妹啊,搬個(gè)凳子坐我旁邊,聽二哥來給你慢慢說啊。”
Java 變量就好像一個(gè)容器,可以保存程序在運(yùn)行過程中的值,它在聲明的時(shí)候會(huì)定義對應(yīng)的數(shù)據(jù)類型(Java 分為兩種數(shù)據(jù)類型:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型)。變量按照作用域的范圍又可分為三種類型:局部變量,成員變量和靜態(tài)變量。
比如說,int data = 88;,其中 data 就是一個(gè)變量,它的值為 88,類型為整形(int)。
01、局部變量
在方法體內(nèi)聲明的變量被稱為局部變量,該變量只能在該方法內(nèi)使用,類中的其他方法并不知道該變量。來看下面這個(gè)示例:
- /**
- * @author 微信搜「沉默王二」,回復(fù)關(guān)鍵字 PDF
- */
- public class LocalVariable {
- public static void main(String[] args) {
- int a = 10;
- int b = 10;
- int c = a + b;
- System.out.println(c);
- }
- }
其中 a、b、c 就是局部變量,它們只能在當(dāng)前這個(gè) main 方法中使用。
聲明局部變量時(shí)的注意事項(xiàng):
- 局部變量聲明在方法、構(gòu)造方法或者語句塊中。
- 局部變量在方法、構(gòu)造方法、或者語句塊被執(zhí)行的時(shí)候創(chuàng)建,當(dāng)它們執(zhí)行完成后,將會(huì)被銷毀。
- 訪問修飾符不能用于局部變量。
- 局部變量只在聲明它的方法、構(gòu)造方法或者語句塊中可見。
- 局部變量是在棧上分配的。
- 局部變量沒有默認(rèn)值,所以局部變量被聲明后,必須經(jīng)過初始化,才可以使用。
02、成員變量
在類內(nèi)部但在方法體外聲明的變量稱為成員變量,或者實(shí)例變量。之所以稱為實(shí)例變量,是因?yàn)樵撟兞恐荒芡ㄟ^類的實(shí)例(對象)來訪問。來看下面這個(gè)示例:
- /**
- * @author 微信搜「沉默王二」,回復(fù)關(guān)鍵字 PDF
- */
- public class InstanceVariable {
- int data = 88;
- public static void main(String[] args) {
- InstanceVariable iv = new InstanceVariable();
- System.out.println(iv.data); // 88
- }
- }
其中 iv 是一個(gè)變量,它是一個(gè)引用類型的變量。new 關(guān)鍵字可以創(chuàng)建一個(gè)類的實(shí)例(也稱為對象),通過“=”操作符賦值給 iv 這個(gè)變量,iv 就成了這個(gè)對象的引用,通過iv.data 就可以訪問成員變量了。
聲明成員變量時(shí)的注意事項(xiàng):
- 成員變量聲明在一個(gè)類中,但在方法、構(gòu)造方法和語句塊之外。
- 當(dāng)一個(gè)對象被實(shí)例化之后,每個(gè)成員變量的值就跟著確定。
- 成員變量在對象創(chuàng)建的時(shí)候創(chuàng)建,在對象被銷毀的時(shí)候銷毀。
- 成員變量的值應(yīng)該至少被一個(gè)方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實(shí)例變量信息。
- 成員變量可以聲明在使用前或者使用后。
- 訪問修飾符可以修飾成員變量。
- 成員變量對于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把成員變量設(shè)為私有。通過使用訪問修飾符可以使成員變量對子類可見;成員變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是 0,布爾型變量的默認(rèn)值是 false,引用類型變量的默認(rèn)值是 null。變量的值可以在聲明時(shí)指定,也可以在構(gòu)造方法中指定。
03、靜態(tài)變量
通過 static 關(guān)鍵字聲明的變量被稱為靜態(tài)變量(類變量),它可以直接被類訪問,來看下面這個(gè)示例:
- /**
- * @author 微信搜「沉默王二」,回復(fù)關(guān)鍵字 PDF
- */
- public class StaticVariable {
- static int data = 99;
- public static void main(String[] args) {
- System.out.println(StaticVariable.data); // 99
- }
- }
其中 data 就是靜態(tài)變量,通過類名.靜態(tài)變量就可以訪問了,不需要?jiǎng)?chuàng)建類的實(shí)例。
聲明靜態(tài)變量時(shí)的注意事項(xiàng):
- 靜態(tài)變量在類中以 static 關(guān)鍵字聲明,但必須在方法構(gòu)造方法和語句塊之外。
- 無論一個(gè)類創(chuàng)建了多少個(gè)對象,類只擁有靜態(tài)變量的一份拷貝。
- 靜態(tài)變量除了被聲明為常量外很少使用。
- 靜態(tài)變量儲(chǔ)存在靜態(tài)存儲(chǔ)區(qū)。
- 靜態(tài)變量在程序開始時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷毀。
- 與成員變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為 public 類型。
- 靜態(tài)變量的默認(rèn)值和實(shí)例變量相似。
- 靜態(tài)變量還可以在靜態(tài)語句塊中初始化。
04、常量
在 Java 中,有些數(shù)據(jù)的值是不會(huì)發(fā)生改變的,這些數(shù)據(jù)被叫做常量——使用 final 關(guān)鍵字修飾的成員變量。常量的值一旦給定就無法改變!
常量在程序運(yùn)行過程中主要有 2 個(gè)作用:
- 代表常數(shù),便于修改(例如:圓周率的值,final double PI = 3.14)
- 增強(qiáng)程序的可讀性(例如:常量 UP、DOWN 用來代表上和下,final int UP = 0)
Java 要求常量名必須大寫。來看下面這個(gè)示例:
- /**
- * @author 微信搜「沉默王二」,回復(fù)關(guān)鍵字 PDF
- */
- public class FinalVariable {
- final String CHEN = "沉";
- static final String MO = "默";
- public static void main(String[] args) {
- FinalVariable fv = new FinalVariable();
- System.out.println(fv.CHEN);
- System.out.println(MO);
- }
- }
“好了,三妹,關(guān)于 Java 變量就先說這么多吧,你是不是已經(jīng)清楚了?”轉(zhuǎn)動(dòng)了一下僵硬的脖子后,我對三妹說。
“是啊,二哥,我想以后還會(huì)再見到它們吧?”
“那見的次數(shù)可就多了,就好像你每天眨眼的次數(shù)一樣多。”
本文轉(zhuǎn)載自微信公眾號「沉默王二」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系沉默王二公眾號。