類變量基本使用
類變量
1. 類變量-提出問(wèn)題
2. 傳統(tǒng)的方法來(lái)解決
3. 類變量快速入門
4. 類變量?jī)?nèi)存布局
5. 什么是類變量
6. 如何定義類變量
7. 如何訪問(wèn)類變量
8. 類變量使用注意事項(xiàng)和細(xì)節(jié)討論
類變量
1. 類變量-提出問(wèn)題
2. 傳統(tǒng)的方法來(lái)解決
3. 類變量快速入門
4. 類變量?jī)?nèi)存布局
5. 什么是類變量
6. 如何定義類變量
7. 如何訪問(wèn)類變量
8. 類變量使用注意事項(xiàng)和細(xì)節(jié)討論
類變量
1. 類變量-提出問(wèn)題
有一群小孩在玩堆雪人,不時(shí)有新的小孩加入,請(qǐng)問(wèn)如何知道現(xiàn)在共有多少人在玩?,編寫程序解決。
2. 傳統(tǒng)的方法來(lái)解決
思路:
1.在main方法中定義一個(gè)變量count
2.當(dāng)一個(gè)小孩加入游戲后count++,最后一個(gè)count 就記錄有多少小孩玩游戲
public class ChildGame { public static void main(String[] args) { //定義一個(gè)變量 count,統(tǒng)計(jì)有多少小孩加入游戲 int count = 0; Child child1 = new Child("小明"); child1.join(); count++; Child child2 = new Child("小華"); child2.join(); count++; Child child3 = new Child("小紅"); child3.join(); count++; System.out.println("共有 " + count + " 個(gè)小孩加入了游戲"); } } class Child{ private String name; public Child(String name){ this.name = name; } public void join(){ System.out.println(name + "加入了游戲"); } }
問(wèn)題分析:
1.count是一個(gè)獨(dú)立于對(duì)象
2.以后訪問(wèn)count很麻煩,沒(méi)有使用到OOP
3.因此,引出 類變量/靜態(tài)變量
3. 類變量快速入門
思考: 如果,設(shè)計(jì)一個(gè) int count 表示總?cè)藬?shù),在創(chuàng)建一個(gè)小孩時(shí),就把 count 加 1,并且 count 是所有對(duì)象共享的就 ok 了,我們使用類變量來(lái)解決 ChildGame.java 改進(jìn)。
public class ChildGame { public static void main(String[] args) { //定義一個(gè)變量 count,統(tǒng)計(jì)有多少小孩加入游戲 int count = 0; Child child1 = new Child("小明"); child1.join(); // count++; child1.count++; Child child2 = new Child("小華"); child2.join(); // count++; child2.count++; Child child3 = new Child("小紅"); child3.join(); // count++; child3.count++; //類變量,可以通過(guò)類名來(lái)訪問(wèn) System.out.println("共有 " + Child.count + " 個(gè)小孩加入了游戲"); System.out.println("child1=" + child1.count); System.out.println("child2=" + child2.count); System.out.println("child3=" + child3.count); } } class Child{ private String name; //定義一個(gè)變量 count ,是一個(gè)類變量(靜態(tài)變量) static //該變量最大的特點(diǎn)就是被 Child 類的所有的對(duì)象實(shí)例所共享 public static int count = 0; public Child(String name){ this.name = name; } public void join(){ System.out.println(name + "加入了游戲"); } }
4. 類變量?jī)?nèi)存布局
static 變量是對(duì)象共享,不管static變量在哪里, static 變量是同一個(gè)類所有對(duì)象共享
static類變量,在類加載的時(shí)候就生成了
5. 什么是類變量
類變量也叫靜態(tài)變量/靜態(tài)屬性,是該類的所有對(duì)象共享的變量,任何一個(gè)該類的對(duì)象去訪問(wèn)它時(shí),取到的都是相同的值。同樣任何一個(gè)該類的對(duì)象去修改它時(shí),修改的也是同一個(gè)變量。
6. 如何定義類變量
定義語(yǔ)法:
訪問(wèn)修飾符 static 數(shù)據(jù)類型 變量名;[推薦] static 訪問(wèn)修飾符 數(shù)據(jù)類型 變量名;
public static String name1 = "兮動(dòng)人"; static public String name2 = "xdr630"
7. 如何訪問(wèn)類變量
類名.類變量名 或 對(duì)象名.類變量名 【靜態(tài)變量的訪問(wèn)修飾符的訪問(wèn)權(quán)限和范圍和普通屬性是一樣的】 推薦使用:類名.類變量名
測(cè)試案例
public class VisitStatic { public static void main(String[] args) { //類名.類變量名 //說(shuō)明:類變量是隨著類的加載而創(chuàng)建的,所以即使沒(méi)有創(chuàng)建對(duì)象也可以訪問(wèn) System.out.println(A.name); //對(duì)象名.類變量名 A a = new A(); System.out.println(a.name); } } class A{ //類變量 //類變量的訪問(wèn)必須遵守相關(guān)的訪問(wèn)權(quán)限 public static String name = "兮動(dòng)人"; }
8. 類變量使用注意事項(xiàng)和細(xì)節(jié)討論
什么時(shí)候需要用類變量:
當(dāng)我們需要讓某個(gè)類的所有對(duì)象都共享一個(gè)變量時(shí),就可以考慮使用類變量(靜態(tài)變量):比如:定義學(xué)生類,統(tǒng)計(jì)所有學(xué)生共交多少錢。 Student (name, static fee)
類變量與實(shí)例變量(普通屬性)區(qū)別:類變量是該類的所有對(duì)象共享的,而實(shí)例變量是每個(gè)對(duì)象獨(dú)享的。
加上static稱為類變量或靜態(tài)變量,否則稱為實(shí)例變量/普通變量/非靜態(tài)變量
類變量可以通過(guò) 類名.類變量名或者對(duì)象名.類變量名來(lái)訪問(wèn),但java設(shè)計(jì)者推薦我們使用類名.類變量名方式訪問(wèn)。【前提是滿足訪問(wèn)修飾符的訪問(wèn)權(quán)限和范圍】
實(shí)例變量不能通過(guò)類名.類變量名方式訪問(wèn)。
類變量是在類加載時(shí)就初始化了,也就是說(shuō),即使你沒(méi)有創(chuàng)建對(duì)象,只要類加載了就可以使用類變量了。
類變量的生命周期是隨類的加載開始,隨著類消亡而銷毀。
Java
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。