1.靜態(tài)初始化塊:
? ? 記住執(zhí)行順序 :有繼承的時候也是一樣--->想想java SA? JVM構(gòu)建虛擬機的時候。棧、堆和方法區(qū)。在構(gòu)建
? ? ? ? ? ? 方法區(qū)的類信息(靜態(tài)變量、靜態(tài)方法、常量(字符串常量) ),new的時候堆(構(gòu)建對象的信息(普通變量、
? ? ? ? ? ? 普通方法)),當(dāng)調(diào)用方法的時候會創(chuàng)建一個棧幀(是連續(xù)的新進的后出)。
2.參數(shù)值傳遞:
Java中,方法中所有參數(shù)都是“值傳遞”,也就是“傳遞的是值的副本”。 也就是說,我們得到的是“原參數(shù)的復(fù)印件,而不是原件”。因此,復(fù)印件改變不會影響原件。
· 基本數(shù)據(jù)類型參數(shù)的傳值
傳遞的是值的副本。 副本改變不會影響原件。
· 引用類型參數(shù)的傳值
傳遞的是傳值的副本。但是引用類型指的是“對象的地址”。因此,副本和原參數(shù)都指向了同一個“地址”,改變“副本指向地址對象的值,也意味著原參數(shù)指向?qū)ο蟮闹狄舶l(fā)生了改變”。
????代碼示列以及圖解:
public?class?User4?{
????int?id;????????//id
????String?name;???//賬戶名
????String?pwd;???//密碼
????public?User4(int?id,?String?name)?{
????????this.id?=?id;
????????this.name?=?name;
????}
????public???void???testParameterTransfer01(User4??u){
????????u.name="高小八";
????}
????public???void???testParameterTransfer02(User4??u){
????????u??=??new??User4(200,"高三");
????}
????public?static?void?main(String[]?args)?{
????????User4???u1??=??new?User4(100,?"高小七");
????????u1.testParameterTransfer01(u1);?
????????System.out.println(u1.name);
????????u1.testParameterTransfer02(u1);
????????System.out.println(u1.name);
? ? /*out下面的圖片說明了---->值傳遞的原因
? ? ? ?高小八?
? ? ? ? 高小八
????*/
????}
}
3.包
我們通過package實現(xiàn)對類的管理,package的使用有兩個要點:
1. 通常是類的第一句非注釋性語句。
2. 包名:域名倒著寫即可,再加上模塊名,便于內(nèi)部管理類。
4.繼承使用要點
1.父類也稱作超類、基類、派生類等。
2.Java中只有單繼承,沒有像C++那樣的多繼承。多繼承會引起混亂,使得繼承鏈過于復(fù)雜,系統(tǒng)難于維護。
3.Java中類沒有多繼承,接口有多繼承。
4.子類繼承父類,可以得到父類的全部屬性和方法 (除了父類的構(gòu)造方法),但不見得可以直接訪問(比如,父類私有的屬性和方法)。
5.如果定義一個類時,沒有調(diào)用extends,則它的父類是:java.lang.Object。
