2018-09-23靜態(tài)初始化塊、參數(shù)值傳遞、包、繼承使用要點

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。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容