最近接觸OOP面向對象,學習了OOP、this、super、package、extends還有override,整體來說如果不清楚內存的流程的話,對這些知識會很混淆,在老師的幫助下,花了一張圖,能清楚的標示出代碼在內存中的流程
內存大致分為四個區域:1、靜態數據區 2、棧 3、堆 4、靜態數據區
編碼,編譯,調用運行,加載Jvm就不細說了,大家應該都清楚。
代碼首先在靜態代碼段開辟空間并命名,然后方法并在棧內存中開辟空間,在對內存中開辟空間,將對應的類復制到堆內存中,賦值并進行構造函數的代碼運算,最后將堆內存中對象的地址復制給對應的類的變量。
具體舉例代碼:
public class OOP_05{ public static void main(String[] args){ Animal a = new Animal(10); m_1(a); System.out.搞清流程時,必須先清楚類的組成有什么:大致分為九類,1、入口方法 2、靜態變量 3、靜態方法 4、成員變量 5、成員方法 6、構造方法 7、靜態代碼段 8、成員代碼段 9、抽象方法
要知道內存中數據不能跨域訪問,否則會報錯,靜態方法不能調用非靜態方法
調用方法必須先開辟棧幀
大致就是這些,如有錯誤指出,請指出。謝謝!
新聞熱點
疑難解答