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

首頁 > 學院 > 開發設計 > 正文

static關鍵字

2019-11-11 04:37:40
字體:
來源:轉載
供稿:網友

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

一、使用static定義屬性

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

 

 

此時每一個對象之中都占用一個“school”屬性,而且這些屬性只有通過student類產生的對象,都應該是相同的那么就是說現在student類產生了10w個對象,若修改時則需要對每個屬性都要修改;設計不合理,應該將School這個屬性作為一個公共屬性出現,節省空間方便數據的統一維護;

1. 使用static關鍵字聲明的屬性就是公共屬性;

范例一:

 

當修改一個屬性的時候所有對象的school屬性都修改了

結論:school是一個公共屬性,而此屬性不在保存在堆內存中,會保存在一個稱為“全局數據區”的內存區域;

 

以上代碼并不規范,既然是公共屬性,就應該由最高代表類進行操作;

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

 

3. 由于static存在由類名稱直接調用的特點,所以static屬性又被稱為“類屬性”,而且static屬性可以在一個類沒有實例化對象的時候直接進行訪問

 

現在為止會發現類中的屬性分為兩種:普通屬性、static屬性;那么在設計的時候優先考慮的是普通屬性;

二、使用static定義方法

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

范例:static方法的使用

在開發之中肯定優先考慮普通方法,但是對于類中的方法有兩類:普通方法、static方法,而這兩類方法調用上是有限制的

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

 

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

思考:為何會出現這樣的情況:

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

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

三、主方法總的static

1. 在主類里編寫方法

范例:

 

結論:如果此時fun()方法上沒有static,則表示static方法(main())要去調用非static方法(fun()),這樣是無法調用的,因為普通方法要先實例化對象

 

2. 分析主方法的組成:

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

?static :表示此方法可以由類名稱直接調用

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

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

?String args[ ]:接受的參數

四、static的使用

功能1:作為統計記錄使用

有一個類要求可以統計出類之中產生過多少個實例化對象,則就可以利用static進行統計;由于每個新對象實例化的時候一定要調用構造方法,所以可以在構造方法里增加統計操作;

 

功能2:實現對象的自動命名

若Person類里有一個name屬性,同時提供有兩個構造方法(無參和一個參數),通過一個可以由外部設置設置人的名字,但是如果調用的是一個無參構造,則不希望name屬性的內容是null,給他一個默認名字“無名氏-編號”,編號不應重復,可以利用static統計;

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江都市| 佳木斯市| 白朗县| 德清县| 德格县| 井冈山市| 金塔县| 庆阳市| 江孜县| 吴堡县| 河曲县| 兰溪市| 阜康市| 姜堰市| 会东县| 简阳市| 南岸区| 兴义市| 丹凤县| 临朐县| 浙江省| 修武县| 雅安市| 乳山市| 电白县| 屯昌县| 青海省| 那坡县| 嘉黎县| 龙江县| 陆丰市| 灌云县| 称多县| 义马市| 始兴县| 青浦区| 厦门市| 滨海县| 广宗县| 惠水县| 孟村|