首先可以明確地說出一個Java類中大體分為兩大塊
1.變量
2.方法
但是方法與變量又有不同的類型
總體來說,方法與變量的種類是能對應(yīng)起來的。
3 -> 2
即3種變量類型-----2種方法類型
| 分類 | 變量 | 方法 |
|---|---|---|
| 靜態(tài)(static) | 靜態(tài)變量 | 靜態(tài)方法 |
| 成員 | 成員變量 | 成員方法 |
| 局部 | 局部變量 | 無 |
以上我們就可以較為直觀的感受到變量與方法的分類
變量與方法存在的意義就是被使用,那我們該如何使用這些變量,或是方法呢?
很關(guān)鍵!!需要注意!
1.靜態(tài)方法和靜態(tài)變量會隨著類的定義而被分配和載入內(nèi)存中。
2.成員方法和成員變量只有在類實例化后new出來的的那個對象的內(nèi)存空間中才有成員方法與成員變量的代碼片段。
根據(jù)上面的特點以及我們的測試,可以得知:
1.靜態(tài)方法可以訪問靜態(tài)變量以及其他的靜態(tài)方法。
2.成員方法可以訪問成員變量,成員方法,靜態(tài)變量和靜態(tài)方法。
之所以會形成以上這樣一種模式成員方法可以訪問各種靜態(tài)代碼,而反過來靜態(tài)方法不能訪問各種成員代碼段的原因是,靜態(tài)方法靜態(tài)屬性在類 被定義的時候就已經(jīng)載入內(nèi)存了,而此時成員方法與成員變量并沒有在內(nèi)存中,如果在靜態(tài)方法中訪問成員變量/方法就會報如下錯誤

圖片.png
形成這種模式(套路)的原因是由JVM決定的。
所以在開發(fā)中我們需要記得,靜態(tài)只能訪問靜態(tài)(包括靜態(tài)之間的賦值),而成員方法能訪問靜態(tài)與成員??傮w來說,靜態(tài)方法的范圍更大,類與類所實例化出來的任意一個對象都可以進(jìn)行訪問。而成員方法只能實例化的那個對象訪問屬于他自己的成員方法/變量。
- 在方法中還有一個比較特殊的方法
構(gòu)造方法記住一點,一般方法一定要寫請出返回值類型(包括getter與setter---具體類型與void)
但是構(gòu)造方法無需寫出返回值類型
(也可以反推,在類中如果一個方法沒有寫返回值類型,那么他就是一個構(gòu)造方法---構(gòu)造方法連void都不用寫,很特殊),
在實例化對象的時候,new 關(guān)鍵字其實就是調(diào)用了構(gòu)造方法。
構(gòu)造方法是實例化對象時進(jìn)行初始化的。