JAVA-初步認識-第四章-記憶體配置圖解

來源:互聯網
上載者:User

標籤:儲存   關鍵字   函數   圖解   .com   代碼   ges   棧記憶體   src   

棧記憶體和堆記憶體是記憶體劃分中,始終存在的。兩者相互配合使用。

資料類型的劃分中,將數組分為引用資料類型,就在於局部變數從數組實體中擷取資料的方式得來的。資料類型分為,基礎資料型別 (Elementary Data Type)和引用資料類型。引用資料類型重點在於“引用”,“基本”和“引用”的不同就在於機制的不同。類和函數也被稱作引用資料類型,說明它們也是獨立存在,可以被調用的,具體可見前面的功能化函數調用。

中的代碼不一定放在主函數裡,但是變數一定有自己的所屬函數。

我們來分析一下流程:cpu劃分的五部分記憶體是一直存在的,首先在棧記憶體中,載入進去函數和屬於函數的局部變數。為了明確基本資料賦值和引用資料賦值的不一樣,我們在定義局部變數時,將二者區分開來,一個是int x,另一個是int[] x。一個是int類型,另一個是[]資料類型,但是為了表示出數組實體中存放的是什麼類型的資料,在[]數群組類型的前面加上所儲存資料的類型int。同時,堆記憶體中也要準備好對應的資料,先是根據關鍵字new,在堆記憶體中開闢出一個數群組類型的空間,空間的大小為3,同時給3個小空間給定空間地址(先給定地址,後給定數值)和預設賦值,最後將對應空間地址傳送給局部變數,由局部變數自己來數組中搜尋資料。這一過程,可以理解為局部變數的資料本身是沒有的,引用的都是來自數組的資料。

對於第二個語句int[] y=new int[3]而言,y和x引用的絕不是同一個數組,是重新定義的另一個資料。

接著的x[]=9, y[]=34, 都是對數組中的元素進行賦值和棧中的局部變數沒有任何關係。

最後,書寫了x=y的語句,x和y都是局部變數,它們之間賦值操作是在棧記憶體中操作的,將y的記憶體的空間地址給x,然後x去下面的數組來搜尋對應的位置的資料,上面的資料就變成了垃圾。接著System.out.println(x[0]),輸出的是34,就是由於上面的數組已經變為了垃圾。

只要還有局部變數的指向,那麼數組就不是垃圾。多個引用變數是可以同時指向一個實體的。

 

JAVA-初步認識-第四章-記憶體配置圖解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.