Jav編程日誌2019/01/10

一、對象如何創建、存在於何以及如何保存和拋棄更有效率。

  對象存在堆上,堆又可以稱爲可垃圾回收的堆。方法在棧上,並且方法會被堆在一起。當調用一個方法時,該方法會在調用棧的棧頂。如果局部變量是個對該對像的引用,只有變量本身會放到棧上。但是對象無論如何都是運行在堆上。

二、爲什麼要理解棧與堆的機制?

1、如果想要了解變量的有效範圍、對象的建立、內存管理、線程和異常處理,則認識堆與棧是很重要的。

2、實例變量是聲明在類中方法之外的地方。局部變量聲明在方法或方法的參數上,並且所有局部變量都存在於棧上相對應的堆棧塊中。不管是實例變量或者局部變量,對象本身都會在堆上。

三、既然編譯器會幫你寫構造函數,爲什麼要自己寫構造函數?

  如果你在創建對象時需要有程序代碼幫忙初始化,那你就得自己編寫構造函數。例如你需要通過用戶的輸入來完成對象的創建。

四、如何分辨構造函數和方法?

  JAVA可以有與類同名的方法而不會變成構造函數。其中的差別在於是否有返回類型。構造函數不會有返回類型。

五、構造函數會被繼承嗎?

  構造函數不會被繼承。

編譯器一定會幫你寫出沒有參數的構造函數嗎?

  不會,如果你已經寫了一個有參數的構造函數,並且你需要一個沒有參數的構造函數,則你必須自己手動寫。而且,如果類有一個以上的構造函數,則參數一定要不一樣。

七、構造函數應該公有的嗎?

  不,構造函數可以公有、私有或者不指定的。

八、一個私有的構造函數有什麼用?沒有人能夠調用它,所以也就沒有人能夠創建該對象?

 私有不是完全不能存取,它代表該類以外不能存取。

、在創建對象時,所有繼承下來的構造函數都會在子類對象創建時期執行。因此執行new指令是個重大事件,它會啓動構造函數的連鎖反應。還有,就是抽象的類也有構造函數。雖然你不能對抽象的類執行new操作,但是抽象的類還是父類,因此它的構造函數會在具體的子類創建出實例時執行。構造函數在執行的時候,第一件事是會去執行它的父類的構造函數,這會連鎖到Object這個類爲止。

、調用父類構造函數的唯一方法是調用super()。

十一、方法可以抓住其他方法所拋出的異常。異常總是會丟回給調用方。會拋出異常的方法必須要聲明它有可能會這麼做。

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章