①main函數:可以被jvm調用,作爲程序入口
定義:public:代表該函數訪問權限是最大的
static :代表着主函數隨着類的加載就已經存在
void:主函數沒有具體的返回值
main:不是關鍵字,是一個特殊的單詞,被JVM識別
(String [] args)函數的參數,參數類型是一個字符串數組,
主函數是固定格式的,以便JVM識別
args 接收兩種類型:數組,null
jvm在調用main時傳入的是new String[0]
②什麼時候使用靜態static
靜態修飾的內容有成員變量和函數
什麼時候定義靜態變量呢?
當對象的出現共享數據時,該數據被靜態所修飾。對象中的持有數據 要定義成非靜態存在於堆內存中
什麼時候定義靜態函數呢?
當功能內部沒有訪問到非靜態數據(對象的持有數據),那麼該功能可以定義爲靜態的
共用功能可獨立封裝
工具類裏定義的多爲靜態方法(不包含操作特有數據)爲了讓此類工具類無法建立對象,可把構造函數私有化
默認構造方法權限與所屬類一致
③幫助文檔javadoc
步驟:
舉例:
/**
this is a ...
@author 張三
@version v1.1
@param arr 接收一個int 類型的數組
@return 會返回一個該數組中最大值
*/
可以 javadoc -d c:\myhelp -author -version Array.java查看
④靜態代碼塊
class{
static{
}
}
隨着類的加載執行,只執行一次,優先於主方法,用於給類初始化
⑤對象初始化
Person P=new Person();
通過JVM加載class文件到內存
加載static塊-----在堆內存開闢內存空間-----默認初始化-----構造初始化----構造方法
具體流程:
-----》
new用到person.class,先找到person.class文件並加載到內存中
執行該類static 塊
在堆內存開闢空間,分配內存地址
在堆內存建立對象的特有屬性,並默認初始化
對屬性顯示初始化
對對象進行構造代碼塊初始化
對構造函數初始化
將內存地址付給棧內存中的p變量。
-----》
⑥對象調用過程
Person P=new Person("zhangsan",20);
p.setName("lisi");