教妹學(xué)Java第8講:初識Java變量
hello,小伙伴們,大家好,我是沉默王二,一枚沉默但有趣的程序員。又到了《教妹學(xué) Java》的時間,很開心,很期待,很舒適,有沒有?這是《教妹學(xué) Java》專欄的第 8 篇文章,我們來談?wù)劇癑ava ?變量”。
強(qiáng)烈推薦:我在 GitHub 上發(fā)現(xiàn)了一個寶藏項目,里面羅列了幾百本 Java 經(jīng)典電子書,包含入門、工具、框架、數(shù)據(jù)庫、并發(fā)編程、底層、性能優(yōu)化、設(shè)計模式、計算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)與算法、面試、大數(shù)據(jù)、架構(gòu)等等方面,應(yīng)有盡有,需要的小伙伴可以到 GitHub 上自?。?br>https://github.com/itwanger/JavaBooks
上一篇文章發(fā)表后,就有小伙伴留言說“二哥,你是成功帶妹入坑啊”,我也是被逼的啊。所以專欄名你們也看到了,對,初衷真的是教我妹學(xué) Java。不過,我相信小伙伴們在閱讀的過程中也一定能感受到思維的樂趣,還能真的學(xué)習(xí)到知識。

再次強(qiáng)調(diào),《教妹學(xué) Java》專欄面向的是零基礎(chǔ)的 Java 學(xué)習(xí)者,我希望這個專欄能夠帶領(lǐng) Java 初學(xué)者輕松邁進(jìn)編程世界的大門,并且能夠讀寫編寫出規(guī)范、有用的 Java 代碼。同時,為后續(xù)的深入學(xué)習(xí)打下堅實的基礎(chǔ)。

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

寫這個專欄的初衷就是為了幫助那些零基礎(chǔ)學(xué) Java,或者自學(xué) Java 感覺特別痛苦,特別難入門的小伙伴。
另外,我還創(chuàng)建了一些「技術(shù)交流群」,群里氛圍很不錯,有不少小伙伴會分享一些校招或者社招經(jīng)驗,更重要的是,群里時不時會有「紅包」等福利,當(dāng)然,群里不允許任何形式的廣告。掃描下方的二維碼,回復(fù)「加群」即可。
示例代碼已經(jīng)同步到 GitHub,地址為 github.com/itwanger,也可以點(diǎn)擊閱讀原文進(jìn)行跳轉(zhuǎn),歡迎 star。
