應(yīng)用程序啟動:
? java 類名
? 調(diào)用JVM,啟動 JVM進程
應(yīng)用程序結(jié)束:
? 1.所有代碼執(zhí)行完了;
? 2.有沒能? 處理 的Exception; Error
? 3.System.exit(0)
? 4.運行的平臺 強制 結(jié)束。
----------------------------------------
類的聲明周期:

1.類的加載:
? 把 類的 字節(jié)碼文件? 加載 到JvM的內(nèi)存 方法區(qū)中,并且 生成 一個 Class類型 的對象。
? ClassLoader 加載的
2.連接
???? 1)驗證:驗證 字節(jié)碼文件 格式是否正確。
? ? ? 2)準(zhǔn)備:為 類變量(靜態(tài)) 分配空間 默認初始化。
? ? ? 3)解析:把 符號引用 轉(zhuǎn)換(替換成) 直接引用(指針:指向內(nèi)存地址的指針)。
? ? ? ? pulic void run(){ 代碼}
3.初始化:為類變量 進行 聲明處 和 靜態(tài)塊處初始化。
??????? 當(dāng)創(chuàng)建某個類的新實例時
? ????? 當(dāng)調(diào)用某個類的靜態(tài)成員;
?? ? ?? 當(dāng)初始化某個子類時,該子類的所有父類都會被初始化。
? ? ? ? 當(dāng)使用反射方法強制創(chuàng)建某個類或接口的對象時
??? ? ? 當(dāng)虛擬機java命令運行啟動類
--------------------------------------------------
類加載器:
? 1.根類加載器
??? 加載核心類庫
? ? D:\Java\jdk1.8.0_144\jre\lib
? ? C++寫的
? 2.擴展類加載器
? ? 加載 擴展類庫
? ? D:\Java\jdk1.8.0_144\jre\lib\ext
? 3.系統(tǒng)類加載器(應(yīng)用類加載器)
? ? classpath路徑下的類 .
? 4.自定義類加載器
? ? 路徑 不是classpath路徑
------------------------------------------------
父類 委托 機制 (雙親)
Student.class
1.查找 此類 是否 已經(jīng)被加載過 ,已經(jīng)加載過了,就返回Class對象
2.系統(tǒng)類加載器先不加載,父加載器(擴展類加載器) 是否存在;存在 ,父加載器(擴展類加載器) 遞歸調(diào)用 父加載器 (根類加載器) 加載;如果 根類加載器 能加載 ,就返回 Class對象,如果不能加載,返回擴展類加載器加載 ,能加載 返回 Class對象, 不能加載,用系統(tǒng)類加載器加載。
3.系統(tǒng)類加載器先不加載,父加載器(擴展類加載器) 是否存在;不存在,請求 根類加載器加載,能加載 返回 Class類型對象,不能,自己加載。
-------------------------------------------------
反射:從 方法區(qū)的 字節(jié)碼中 動態(tài)的獲得 類中的信息。
獲得:
屬性:
? getDeclaredFields()獲得所有屬性(包括私有)
? getName() 獲得名字
? getType() 獲得類型
? getModifiers() 獲得訪問修飾符
? set() 給屬性賦值
? get() 獲得屬性值
方法:
? getDeclaredMethods() 獲得所有方法
? getReturnType()? ? ? 獲得返回類型
? getParameterTypes()? 獲得參數(shù)列表
? invoke() 調(diào)用方法
構(gòu)造:
? getDeclaredConstructors()所有構(gòu)造器
? newInstance() 調(diào)用構(gòu)造器
------------------------------------------------------------------
注解:從JDK5開始, Java增加了對元數(shù)據(jù)(MetaData)的支持,就是注解Annotation;注解是指代碼里的特殊標(biāo)記,這些標(biāo)記可以在編譯、類加載、運行時被讀取,并執(zhí)行相應(yīng)的處理。
@interface 注解名{
? //成員變量,類型參數(shù)
? public
? 默認
? public? 類型 名();
? public 類型 名() default 默認值;
}