国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

static關(guān)鍵字

2019-11-11 04:08:17
字體:
供稿:網(wǎng)友

java里面,static可以定義屬性、方法。

一、使用static定義屬性

寫一個(gè)程序要求定義出一個(gè)表示所有清華大學(xué)學(xué)校的學(xué)生信息,那么就證明學(xué)生類里面需要提供一個(gè)學(xué)校的信息,表示所在的學(xué)校,按照之前的內(nèi)容,代碼如下:

 

 

此時(shí)每一個(gè)對象之中都占用一個(gè)“school”屬性,而且這些屬性只有通過student類產(chǎn)生的對象,都應(yīng)該是相同的那么就是說現(xiàn)在student類產(chǎn)生了10w個(gè)對象,若修改時(shí)則需要對每個(gè)屬性都要修改;設(shè)計(jì)不合理,應(yīng)該將School這個(gè)屬性作為一個(gè)公共屬性出現(xiàn),節(jié)省空間方便數(shù)據(jù)的統(tǒng)一維護(hù);

1. 使用static關(guān)鍵字聲明的屬性就是公共屬性;

范例一:

 

當(dāng)修改一個(gè)屬性的時(shí)候所有對象的school屬性都修改了

結(jié)論:school是一個(gè)公共屬性,而此屬性不在保存在堆內(nèi)存中,會保存在一個(gè)稱為“全局?jǐn)?shù)據(jù)區(qū)”的內(nèi)存區(qū)域;

 

以上代碼并不規(guī)范,既然是公共屬性,就應(yīng)該由最高代表類進(jìn)行操作;

2. 使用static定義的屬性往往會通過類名稱直接調(diào)用;

 

3. 由于static存在由類名稱直接調(diào)用的特點(diǎn),所以static屬性又被稱為“類屬性”,而且static屬性可以在一個(gè)類沒有實(shí)例化對象的時(shí)候直接進(jìn)行訪問

 

現(xiàn)在為止會發(fā)現(xiàn)類中的屬性分為兩種:普通屬性、static屬性;那么在設(shè)計(jì)的時(shí)候優(yōu)先考慮的是普通屬性;

二、使用static定義方法

既然使用static定義的屬性可以通過類名稱直接訪問,那么使用static定義的方法也一定可以直接訪問,而且使用static定義的方法其主要目的就是為了操作static屬性。

范例:static方法的使用

在開發(fā)之中肯定優(yōu)先考慮普通方法,但是對于類中的方法有兩類:普通方法、static方法,而這兩類方法調(diào)用上是有限制的

1)使用static方法只能夠調(diào)用static屬性和static方法,不能夠調(diào)用任何非static操作;

 

2)使用非static方法可以調(diào)用任何的static屬性或static方法

思考:為何會出現(xiàn)這樣的情況:

首先static方法和非static方法調(diào)用的時(shí)機(jī)是不同的。Static方法可以由類名稱直接調(diào)用,那么在調(diào)用的時(shí)候可以沒有實(shí)例化對象產(chǎn)生;而非static方法,必須在有實(shí)例化對象產(chǎn)生之后才可以調(diào)用(對象實(shí)例化之后會開辟堆內(nèi)存空間,在堆內(nèi)存空間之中要保存屬性信息);

雖然static定義的屬性和方法是在類之中定義的,但是卻獨(dú)立于對象的控制;那么只有在一中情況下回選擇定義static方法:如果一個(gè)類之中沒有任何的屬性存在,那么就可以考慮將所有的方法都定義為static;

三、主方法總的static

1. 在主類里編寫方法

范例:

 

結(jié)論:如果此時(shí)fun()方法上沒有static,則表示static方法(main())要去調(diào)用非static方法(fun()),這樣是無法調(diào)用的,因?yàn)槠胀ǚ椒ㄒ葘?shí)例化對象

 

2. 分析主方法的組成:

?public:這是一種權(quán)限,表示公共的都可以訪問

?static :表示此方法可以由類名稱直接調(diào)用

?void :主方法是一切的開始,只要開頭了就沒有回頭路了

?main( ):是一個(gè)默認(rèn)定義好的方法名稱,使用Java解釋類要找main方法

?String args[ ]:接受的參數(shù)

四、static的使用

功能1:作為統(tǒng)計(jì)記錄使用

有一個(gè)類要求可以統(tǒng)計(jì)出類之中產(chǎn)生過多少個(gè)實(shí)例化對象,則就可以利用static進(jìn)行統(tǒng)計(jì);由于每個(gè)新對象實(shí)例化的時(shí)候一定要調(diào)用構(gòu)造方法,所以可以在構(gòu)造方法里增加統(tǒng)計(jì)操作;

 

功能2:實(shí)現(xiàn)對象的自動命名

若Person類里有一個(gè)name屬性,同時(shí)提供有兩個(gè)構(gòu)造方法(無參和一個(gè)參數(shù)),通過一個(gè)可以由外部設(shè)置設(shè)置人的名字,但是如果調(diào)用的是一個(gè)無參構(gòu)造,則不希望name屬性的內(nèi)容是null,給他一個(gè)默認(rèn)名字“無名氏-編號”,編號不應(yīng)重復(fù),可以利用static統(tǒng)計(jì);

 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 剑阁县| 台南县| 东平县| 灯塔市| 施甸县| 灌南县| 泰宁县| 陇南市| 张家口市| 祁连县| 惠州市| 会昌县| 阿巴嘎旗| 庆元县| 项城市| 长白| 通辽市| 即墨市| 蒙自县| 剑川县| 封丘县| 南投市| 郯城县| 平山县| 岳池县| 锡林浩特市| 开江县| 皋兰县| 郎溪县| 奇台县| 炉霍县| 阿克陶县| 呈贡县| 贺兰县| 南通市| 平遥县| 丹巴县| 二连浩特市| 且末县| 阿鲁科尔沁旗| 碌曲县|