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

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

static關(guān)鍵字

2019-11-11 05:14:41
字體:
供稿:網(wǎng)友

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

一、使用static定義屬性

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

 

 

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

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

范例一:

 

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

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

 

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

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

 

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

 

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

二、使用static定義方法

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

范例:static方法的使用

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

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

 

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

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

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

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

三、主方法總的static

1. 在主類里編寫方法

范例:

 

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

 

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í)例化對(duì)象,則就可以利用static進(jìn)行統(tǒng)計(jì);由于每個(gè)新對(duì)象實(shí)例化的時(shí)候一定要調(diào)用構(gòu)造方法,所以可以在構(gòu)造方法里增加統(tǒng)計(jì)操作;

 

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

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

 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇州市| 横峰县| 广汉市| 崇州市| 正安县| 上栗县| 棋牌| 湖南省| 思茅市| 锡林郭勒盟| 资溪县| 马尔康县| 邯郸市| 阿拉善右旗| 永仁县| 岳普湖县| 汤原县| 讷河市| 永靖县| 德保县| 沛县| 玉龙| 射洪县| 盖州市| 平罗县| 湘潭市| 长治市| 潼南县| 交口县| 福海县| 同心县| 志丹县| 溧阳市| 建平县| 岢岚县| 黔西县| 友谊县| 余庆县| 漯河市| 巩留县| 吕梁市|