Java基礎
static(靜態)關鍵字
static關鍵字:
用於修飾成員(成員變量和成員函數)
被修飾後的成員具備以下特點:
隨着類的加載而加載
也就是說靜態會隨着類的消失而消失,說明它的生命週期最長。
優先於對象存在
被所有對象所共享
可以直接被類名調用 類名.靜態成員
實例變量和類變量的區別:
1,存放位置:
類變量隨着類的加載而存在於方法區中。
實例變量隨着對象的建立而存在於堆內存中。
2,生命週期:
類變量生命週期最長,隨着類的消失而消失。
實例變量生命週期隨着對象的消失而消失。
使用注意:
靜態方法只能訪問靜態成員
非靜態方法既可以訪問靜態成員,也可以訪問非靜態成員
靜態方法中不可以寫this,super關鍵字
因爲靜態優先於對象存在。
主函數是靜態的
靜態有利有弊
利:對對象的共享數據進行單獨空間的存儲,節省空間。沒有必要每一個對象中都存儲一份。
可以直接被類名調用
弊:生命週期過長,
訪問出現侷限性。(靜態雖好,只能訪問靜態)
main函數
主函數:是一個特殊的函數,作爲程序的入口,可以被jvm調用。
主函數的定義:
public:代表着該函數的訪問權限是最大的。
static:代表主函數隨着類的加載就已經存在了。
void:主函數沒有具體的返回值。
main:不是關鍵字,但是是一個特殊的單詞,可以被jvm識別。
(String[] args):函數的參數,參數類型是一個數組,該數組中的元素是字符串。字符串類型的數組。
主函數是固定格式的:jvm識別。
jvm在調用主函數時,傳入的是 new String[0];
靜態什麼時候使用
什麼時候使用靜態,要從兩方面入手。
因爲靜態修飾的內容有成員變量和函數。
1,什麼時候定義靜態變量呢?
當對象中出現共享數據時,該數據被靜態所修飾。
對象中的特有數據要定義成非靜態存在於堆內存中。
2,什麼時候定義靜態函數?
當功能內部沒有訪問到非靜態數據時(對象的特有數據),那麼該功能可以定義成靜態的。
默認構造函數
一個類中默認會有一個空參數的構造函數,
這個默認的構造函數的權限和所屬類一致。
如果類被public修飾,那麼默認的構造函數也帶public修飾符。
如果類沒有被public修飾,那麼默認的構造函數,也沒有public修飾。
默認構造構造函數的權限是隨着的類的變化而變化的。
靜態代碼塊
格式:
static
{
靜態代碼塊中的執行語句。
}
特點:隨着類的加載而執行,只執行一次,並優先於主函數。
用於給類進行初始化的。
設計模式
設計模式:解決某一類問題最行之有效的方法。
java中23種設計模式
單例設計模式:
解決一個類在內存中只存在一個對象。
想要保證對象唯一。
1,爲了避免其他程序過多建立該類對象。先禁止其他程序建立該類對象
2,還爲了讓其他程序可以訪問到該類對象,只好在本類中,自定義一個對象。
3,爲了方便其他程序對自定義對象的訪問,可以對外提供一些訪問方式。
這三部怎麼用代碼體現呢?
1,將構造函數私有化。
2,在類中創建一個本類對象。
3,提供一個方法可以獲取到該對象。
對於事物該怎麼描述,還怎麼描述。
當需要將該事物的對象保證在內存中唯一時,就將以上的三步加上即可。
記住原則:定義單例,建議使用餓漢式。