應(yīng)用程序啟動(dòng):
? java 類名
? 調(diào)用JVM,啟動(dòng) JVM進(jìn)程
應(yīng)用程序結(jié)束:
? 1.所有代碼執(zhí)行完了溅固;
? 2.有沒(méi)能? 處理 的Exception; Error
? 3.System.exit(0)
? 4.運(yùn)行的平臺(tái) 強(qiáng)制 結(jié)束尔邓。
----------------------------------------
類的聲明周期:
1.類的加載:
? 把 類的 字節(jié)碼文件? 加載 到JvM的內(nèi)存 方法區(qū)中晾剖,并且 生成 一個(gè) Class類型 的對(duì)象。
? ClassLoader 加載的
2.連接
???? 1)驗(yàn)證:驗(yàn)證 字節(jié)碼文件 格式是否正確梯嗽。
? ? ? 2)準(zhǔn)備:為 類變量(靜態(tài)) 分配空間 默認(rèn)初始化齿尽。
? ? ? 3)解析:把 符號(hào)引用 轉(zhuǎn)換(替換成) 直接引用(指針:指向內(nèi)存地址的指針)。
? ? ? ? pulic void run(){ 代碼}
3.初始化:為類變量 進(jìn)行 聲明處 和 靜態(tài)塊處初始化灯节。
??????? 當(dāng)創(chuàng)建某個(gè)類的新實(shí)例時(shí)
? ????? 當(dāng)調(diào)用某個(gè)類的靜態(tài)成員循头;
?? ? ?? 當(dāng)初始化某個(gè)子類時(shí),該子類的所有父類都會(huì)被初始化。
? ? ? ? 當(dāng)使用反射方法強(qiáng)制創(chuàng)建某個(gè)類或接口的對(duì)象時(shí)
??? ? ? 當(dāng)虛擬機(jī)java命令運(yùn)行啟動(dòng)類
--------------------------------------------------
類加載器:
? 1.根類加載器
??? 加載核心類庫(kù)
? ? D:\Java\jdk1.8.0_144\jre\lib
? ? C++寫的
? 2.擴(kuò)展類加載器
? ? 加載 擴(kuò)展類庫(kù)
? ? D:\Java\jdk1.8.0_144\jre\lib\ext
? 3.系統(tǒng)類加載器(應(yīng)用類加載器)
? ? classpath路徑下的類 .
? 4.自定義類加載器
? ? 路徑 不是classpath路徑
------------------------------------------------
父類 委托 機(jī)制 (雙親)
Student.class
1.查找 此類 是否 已經(jīng)被加載過(guò) 炎疆,已經(jīng)加載過(guò)了卡骂,就返回Class對(duì)象
2.系統(tǒng)類加載器先不加載,父加載器(擴(kuò)展類加載器) 是否存在;存在 形入,父加載器(擴(kuò)展類加載器) 遞歸調(diào)用 父加載器 (根類加載器) 加載;如果 根類加載器 能加載 全跨,就返回 Class對(duì)象,如果不能加載亿遂,返回?cái)U(kuò)展類加載器加載 浓若,能加載 返回 Class對(duì)象, 不能加載蛇数,用系統(tǒng)類加載器加載挪钓。
3.系統(tǒng)類加載器先不加載,父加載器(擴(kuò)展類加載器) 是否存在;不存在苞慢,請(qǐng)求 根類加載器加載诵原,能加載 返回 Class類型對(duì)象,不能,自己加載绍赛。
-------------------------------------------------
反射:從 方法區(qū)的 字節(jié)碼中 動(dòng)態(tài)的獲得 類中的信息蔓纠。
獲得:
屬性:
? getDeclaredFields()獲得所有屬性(包括私有)
? getName() 獲得名字
? getType() 獲得類型
? getModifiers() 獲得訪問(wèn)修飾符
? set() 給屬性賦值
? get() 獲得屬性值
方法:
? getDeclaredMethods() 獲得所有方法
? getReturnType()? ? ? 獲得返回類型
? getParameterTypes()? 獲得參數(shù)列表
? invoke() 調(diào)用方法
構(gòu)造:
? getDeclaredConstructors()所有構(gòu)造器
? newInstance() 調(diào)用構(gòu)造器
------------------------------------------------------------------
注解:從JDK5開(kāi)始, Java增加了對(duì)元數(shù)據(jù)(MetaData)的支持吗蚌,就是注解Annotation腿倚;注解是指代碼里的特殊標(biāo)記,這些標(biāo)記可以在編譯蚯妇、類加載敷燎、運(yùn)行時(shí)被讀取,并執(zhí)行相應(yīng)的處理箩言。
@interface 注解名{
? //成員變量硬贯,類型參數(shù)
? public
? 默認(rèn)
? public? 類型 名();
? public 類型 名() default 默認(rèn)值;
}