JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

JAVA基礎學習之面向對象(進一步認識)

14.1 通過車的類,演示堆棧內存圖

1、首先在方法區定義主方法,然後運行到new Car,再定義車的類的方法,並在堆中初始化車的類,並將類的地址值給棧中的主函數,然後運行到堆中進行類的賦值。運行到行為時把類的行為壓進棧中,執行完成後又彈出棧外(即清空)。

程序演示如圖1、2:

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖1

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖2

14.2 二個對象的內存圖

1、如果沒有任何引用指向堆內的對象,那麼該對象就會變成垃圾,Java中有完善的垃圾回收機制,會在不定時對其進行回收。

程序演示如圖3、4:

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖3

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖4

說明:把null賦值給方法c2後,程序會提醒提醒空指針異常;被null賦值後的c2,導致沒有任何引用指向堆內的對象,使對象就會變成垃圾,Java中有完善的垃圾回收機制,就等待回收該對象。

14.3 三個引用兩個對象的內存圖

1、把其中一個對象c2賦值給第三個對象c3,輸出得到c3和c2一樣。

程序演示如圖5、6:

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖5

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖6

14.3 成員變量和局部變量的區別

1、在類中的位置不同:

成員變量:在類中方法外;

2、在內存中的位置不同:

成員變量:在堆內存(成員變量屬於對象,對象進堆內存);

局部變量:在棧內存(局部變量屬於方法,方法進棧內存)。

3、生命週期不同:

成員變量:隨著對象的創建而存在,隨著對象的消失而消失;

局部變量:隨著方法的調用而存在,隨著方法的調用完畢而消失。

4、初始化值不同:

成員變量:有默認的初始化值;

局部變量:沒有默認的初始化值,必須先定義,賦值,然後才能使用。

5、注意要點:

a.局部變量名稱可以和成員變量的名稱相同,在方法中使用的時候的是就近原則;

b.基本數據類型變量包括:byte,short,int,long,float,double,boolean,chae。

c.引用數據類型變量包括:數組,類,接口,枚舉。

案例如圖7:

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖7

14.4 方法的形式參數是類名的時候如何調用:

1、方法的參數是類名public void print(Student s) {} //print(new Student()) ;

如果一個方法的形式參數是一個類類型(引用類型),此時需要的是該類的對象。

案例演示如圖8:

JAVA基礎學習之進一步認識面向對象,掌握對象在堆棧中的內存圖

圖8

說明:基本數據類型作為參數的時候,直接傳遞值,引用數據類型作為參數的時候,許創建對象傳地址值。

感謝支持,我是小區日記本,每天根據小編的學習,持續分享學習的筆記與心得。

案例代碼截圖僅包含部分,小編已整理了全部代碼並分享,可免費領取,私信回覆2個字:代碼


分享到:


相關文章: