1.靜態(tài)初始化塊:
? ? 記住執(zhí)行順序 :有繼承的時(shí)候也是一樣--->想想java SA? JVM構(gòu)建虛擬機(jī)的時(shí)候。棧决采、堆和方法區(qū)自沧。在構(gòu)建
? ? ? ? ? ? 方法區(qū)的類信息(靜態(tài)變量、靜態(tài)方法树瞭、常量(字符串常量) )拇厢,new的時(shí)候堆(構(gòu)建對象的信息(普通變量、
? ? ? ? ? ? 普通方法))晒喷,當(dāng)調(diào)用方法的時(shí)候會(huì)創(chuàng)建一個(gè)棧幀(是連續(xù)的新進(jìn)的后出)孝偎。
2.參數(shù)值傳遞:
Java中,方法中所有參數(shù)都是“值傳遞”凉敲,也就是“傳遞的是值的副本”衣盾。 也就是說,我們得到的是“原參數(shù)的復(fù)印件爷抓,而不是原件”势决。因此,復(fù)印件改變不會(huì)影響原件蓝撇。
· 基本數(shù)據(jù)類型參數(shù)的傳值
傳遞的是值的副本果复。 副本改變不會(huì)影響原件。
· 引用類型參數(shù)的傳值
傳遞的是傳值的副本渤昌。但是引用類型指的是“對象的地址”虽抄。因此走搁,副本和原參數(shù)都指向了同一個(gè)“地址”,改變“副本指向地址對象的值迈窟,也意味著原參數(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實(shí)現(xiàn)對類的管理,package的使用有兩個(gè)要點(diǎn):
1. 通常是類的第一句非注釋性語句菠隆。
2. 包名:域名倒著寫即可兵琳,再加上模塊名,便于內(nèi)部管理類骇径。
4.繼承使用要點(diǎn)
1.父類也稱作超類躯肌、基類、派生類等破衔。
2.Java中只有單繼承清女,沒有像C++那樣的多繼承。多繼承會(huì)引起混亂晰筛,使得繼承鏈過于復(fù)雜嫡丙,系統(tǒng)難于維護(hù)。
3.Java中類沒有多繼承读第,接口有多繼承曙博。
4.子類繼承父類,可以得到父類的全部屬性和方法 (除了父類的構(gòu)造方法)怜瞒,但不見得可以直接訪問(比如父泳,父類私有的屬性和方法)。
5.如果定義一個(gè)類時(shí)吴汪,沒有調(diào)用extends惠窄,則它的父類是:java.lang.Object。